您的位置:首页 > 移动开发 > IOS开发

今天写一些 有关iOS 多图片组合 成一张图片的问题。保持原像素不变

2015-08-07 16:22 369 查看
1.要求:服务器给一张图片模板,要在模版上镂空,然后添加一些别的图片,然后组合成一张图,这个模版的像素 不是固定的,有可能比 当前手机屏幕大。所以,在组合截图的时候,有一定的要求。

贴代码:

/**
*  组合图片   imgVC_bg :模版image存放的uiimageview    , array_imageView 镂空图片视图,double_proportion:模版图片放大后 和 当前屏幕宽或高的比例
*/
#pragma makr -组合图片
-(void )SaveImageViewWithMoBan
{
UIGraphicsBeginImageContext(imgVC_bg.image.size);//截取图片内容的大小,这里为了保证像素是原来像素,一定要用image的size

[imgVC_bg.image drawInRect:CGRectMake(0, 0, imgVC_bg.image.size.width, imgVC_bg.image.size.height)];//不用说了,draw的时候也是一样
for (UIImageView *imgvc in array_imageView) {//循环 draw。这里是除以比例,这里的偏移量原本乘了比列,现在要还原成本身的大小,肯定是除以比例啦
UIImage *img=imgvc.image;
[img drawInRect:CGRectMake(imgvc.frame.origin.x/double_proportion,imgvc.frame.origin.y/double_proportion,imgvc.frame.size.width/double_proportion,imgvc.frame.size.height/double_proportion)];

}
      //重新创建一个图片,图片的大小一定要是原模版图的大小
CGImageRef NewMergeImg = CGImageCreateWithImageInRect(UIGraphicsGetImageFromCurrentImageContext().CGImage,
CGRectMake(0, 0, imgVC_bg.image.size.width, imgVC_bg.image.size.height));
UIGraphicsEndImageContext();

[imgVC_bg removeFromSuperview];
{
UIImage *img=[UIImage imageWithCGImage:NewMergeImg];
UIImageView *imgvc=[[UIImageView alloc]initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height-64)];
[imgvc setImage:img];
      //打印原模版图的size,看是否有变
NSLog(@"img_width=%lf img_height=%lf",img.size.width,img.size.height);
[vContainer addSubview:imgvc];
}
[kAPPDELEGATE.navigationController popViewControllerAnimated:YES];
[[NSNotificationCenter defaultCenter]postNotificationName:@"EditImage" object:[UIImage imageWithCGImage:NewMergeImg] userInfo:nil];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: