//图片合成的三种方式:imgSizeArray--图片size数组,imgArray--图片数组,imgPointArray--图片origin数组
//第一种,利用drawInRect,drawAtPoint,CGContextDrawImage合成
- (UIImage*) mergedImage1OnImageSizeArr:(NSArray*)imgSizeArray WithImageArray:(NSArray*)imgArray AndImagePointArray:(NSArray*)imgPointArray
{
float DW = self.view.frame.size.width;
float DH = self.view.frame.size.height;
CGImageRefNewMergeImg;
CGSizeimageSize =CGSizeMake(DW*8, DH*8);
UIGraphicsBeginImageContext(imageSize);
UIImage *img = [[UIImage alloc]init];
inti =0;
for(imginimgArray){
NSValue*tmpVal = imgPointArray[i];
CGPointtmpPoint = [tmpValCGPointValue];
[imgdrawAtPoint:CGPointMake(tmpPoint.x, tmpPoint.y)];
//这两个方法也可以
// NSValue *tmpVal1 = imgSizeArray[i];
// CGSize tmpSize = [tmpVal1 CGSizeValue];
// [img drawInRect:CGRectMake(tmpPoint.x, tmpPoint.y, tmpSize.width, tmpSize.height), img.CGImage)];
// CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(tmpPoint.x, tmpPoint.y, tmpSize.width, tmpSize.height), img.CGImage);
i+=1;
}
NewMergeImg =CGImageCreateWithImageInRect(UIGraphicsGetImageFromCurrentImageContext().CGImage,
CGRectMake(0,0, DW*8, DH*8));
UIGraphicsEndImageContext();
UIImage*image;
if(NewMergeImg) {
image = [UIImageimageWithCGImage:NewMergeImg];
CGImageRelease(NewMergeImg);
NewMergeImg =nil;
}
returnimage;
}
//第二种,利用UIView layer合成
- (UIImage*) mergedImage2OnImageSizeArr:(NSArray*)imgSizeArray WithImageArray:(NSArray*)imgArray AndImagePointArray:(NSArray*)imgPointArray
{
float DW = self.view.frame.size.width;
float DH = self.view.frame.size.height;
CGSizeimageSize =CGSizeMake(DW*8, DH*8);
UIGraphicsBeginImageContext(imageSize);
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);
UIView*mergedView = [selfgetMergedViewSize2:imageSizepoint:imgPointArrayimage:imgArraysize:imgSizeArray];
[mergedView.layer renderInContext:UIGraphicsGetCurrentContext()];
mergedView =nil;
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
returnimage;
}
//第三种,利用layer合成
- (UIImage*) mergedImage3OnImageSizeArr:(NSArray*)imgSizeArray WithImageArray:(NSArray*)imgArray AndImagePointArray:(NSArray*)imgPointArray
{
float DW = self.view.frame.size.width;
float DH = self.view.frame.size.height;
CGSizeimageSize =CGSizeMake(DW*8, DH*8);
UIGraphicsBeginImageContext(imageSize);
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);
CALayer*layers = [selfgetMergedViewSize3:imageSizepoint:imgPointArrayimage:imgArraysize:imgSizeArray];
[layersrenderInContext:UIGraphicsGetCurrentContext()];
layers =nil;
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
returnimage;
}
-(UIView*)getMergedViewSize2:(CGSize)size point:(NSArray*)pointArr image:(NSArray*)imageArr size:(NSArray*)sizeArr{
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, size.width, size.height)];
inti =0;
UIImage *img = [[UIImage alloc]init];
for(imginimageArr){
NSValue*tmpVal = pointArr[i];
CGPointtmpPoint = [tmpValCGPointValue];
NSValue*sizeVal = sizeArr[i];
CGSizetmpSize = [sizeValCGSizeValue];
UIImageView*imageView = [[UIImageViewalloc]initWithFrame:(CGRect){tmpPoint.x, tmpPoint.y, tmpSize.width, tmpSize.height}];
imageView.image= img;
[viewaddSubview:imageView];
imageView =nil;
img =nil;
i+=1;
}
imageArr =nil;
returnview;
}
-(CALayer*)getMergedViewSize3:(CGSize)size point:(NSArray*)pointArr image:(NSArray*)imageArr size:(NSArray*)sizeArr{
inti =0;
UIImage *img = [[UIImage alloc]init];
CALayer *layers = [CALayer layer];
layers.frame=CGRectMake(0,0, size.width, size.height);
for(imginimageArr){
NSValue*tmpVal = pointArr[i];
CGPointtmpPoint = [tmpValCGPointValue];
NSValue*sizeVal = sizeArr[i];
CGSizetmpSize = [sizeValCGSizeValue];
CALayer* imageLayer = [CALayerlayer];
imageLayer.frame=CGRectMake(tmpPoint.x, tmpPoint.y, tmpSize.width, tmpSize.height);
imageLayer.contents= (id)img.CGImage;
[layersaddSublayer:imageLayer];
imageLayer =nil;
img =nil;
i+=1;
}
imageArr =nil;
returnlayers;
}
网友评论