将两张重叠的图片合二为一,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的主要内容,如果未能解决你的问题,请参考以下文章

使用Vue将两张图片叠加再保存为一张图片下载

使用Vue将两张图片叠加再保存为一张图片下载

使用Vue将两张图片叠加再保存为一张图片下载

将两张照片合二为一[重复]

PIL实现图片合成

图片怎么合并在一起 怎么将两张图片合并在一起