将两张重叠的图片合二为一,iOS
Posted
技术标签:
【中文标题】将两张重叠的图片合二为一,iOS【英文标题】:Save two overlapping images in one, iOS 【发布时间】:2013-11-18 06:15:15 【问题描述】:可能重复:Saving two Overlapping UIImage
在 UIScrollView 中,我添加了我的 UIImageView,并且在其上方有一个 框架层。我想在所有编辑后将最终图像保存在屏幕上。对上述问题的回答确实有效,但在绘制框架时,会导致 我的图像质量下降,因此我正在寻找一种使我的图像保持良好分辨率的解决方案。 请帮我解决这个问题,在此先感谢!
【问题讨论】:
【参考方案1】:试试这个代码:
//merge two images for this code
UIImage *bottomImage =imgview.image; //background image ////1st image
UIImage *image = imgProfile.image; //foreground image///2nd image
CGSize newSize = CGSizeMake(270, 330); // set your image rect
UIGraphicsBeginImageContext( newSize );
// Use existing opacity as is
[bottomImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];///1st image set frame
// Apply supplied opacity if applicable
[image drawInRect:CGRectMake(81,218,97,78) blendMode:kCGBlendModeNormal alpha:1]; //2nd image set frame on bottom image with alpha value
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
NSData *imageData = UIImagePNGRepresentation(newImage);
[imageData writeToFile:savedImagePath atomically:NO];
您可以在应用程序的文档目录中看到新创建的图像。
【讨论】:
我没明白,为什么你使用这两个语句:CGSize newSize = CGSizeMake(270, 330); [图像 drawInRect:CGRectMake(81,218,97,78) blendMode: kCGBlendModeNormal alpha:1];以及它将如何设法将我的图像保持在原始分辨率?你能解释一下吗 第一个 CGSize Newsize 它定义了整个尺寸图像的大小,第二个帧是第二个图像的帧。表示您要在底部图像上显示第二个图像的位置。在某些情况下,前景图像比底部图像小,因此如果您想在顶部或底部或中心的大图像上显示小图像。根据您的要求将第二张图片的框架设置在第一张图片上 但正如我所说,它不能保持我图像的实际分辨率,它会产生 270X330 的图像.. :( 然后将您自己的分辨率设置为 270 x 330。 但我仍然无法将其设置为超过 320X480 .. 这是可悲的部分以上是关于将两张重叠的图片合二为一,iOS的主要内容,如果未能解决你的问题,请参考以下文章