在iOS中保持截图的透明度

5
我正在使用以下代码截取Xib文件中特定视图的屏幕截图...
UIView* captureView = self.view;
UIGraphicsBeginImageContextWithOptions(captureView.bounds.size, NO , 0.0f);
[captureView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);

它可以正常工作,并将JPG图像保存到相机胶卷中。

但问题是,我的视图上还有另一个UIImageView,该UIImageView中有一张半透明的图片。 我的屏幕截图没有保留该透明度。我希望保持实际屏幕上的透明度不变。

如何保留屏幕截图中的透明度?


UIImageView是否是captureView的子视图? - Muruganandham K
是的,当然可以。 - ayon
请查看此链接...您将看到苹果图像的叠加层,这是透明度丢失的图像..http://stackoverflow.com/questions/20298887/take-screenshot-of-a-uiimage-ios - ayon
获取单个图像是否足够? - Muruganandham K
请查看下面我的答案。 - Muruganandham K
这个问题的答案涉及迭代所有视图的方法是一个很好的起点:https://dev59.com/5mzXa4cB1Zd3GeqPTnLE - Daniel Randall
4个回答

3

如果您在不透明属性中指定为“否”,则您的图像必须包含一个 alpha 通道才能正常工作。请检查您的图像是否有 alpha 通道。


你能演示如何添加一个Alpha通道吗?或者帮忙编写代码。 - Ankit Kumar Gupta

2

JPG没有透明度,所以一旦将其转换为JPG,alpha通道就消失了。这是UIImageWriteToSavedPhotosAlbum存在的已知限制。

它不支持png格式。


1
尝试一下。这段代码对我有效。
  UIGraphicsBeginImageContext(baseViewOne.frame.size);
            [[baseViewOne layer] renderInContext:UIGraphicsGetCurrentContext()];
            UIImage * screenshota = UIGraphicsGetImageFromCurrentImageContext();
            UIGraphicsEndImageContext();

同时,请检查cocoa coder屏幕截图


0
NSData* imdata = UIImagePNGRepresentation(_snapshotImgView.image);
UIImage* snapshotPNG = [UIImage imageWithData:imdata];

UIImageWriteToSavedPhotosAlbum(snapshotPNG, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接