【问题标题】:UIImageWriteToSavedPhotosAlbum saves to wrong size and qualityUIImageWriteToSavedPhotosAlbum 保存到错误的大小和质量
【发布时间】:2010-11-25 15:25:05
【问题描述】:

我正在尝试截取我的应用当前视图的屏幕截图并将其保存到相册(然后通过电子邮件或彩信发送)。

UIGraphicsBeginImageContext(self.view.bounds.size); 

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(viewImage, self, @selector(savedPhotoImage:didFinishSavingWithError:contextInfo:), nil);

这可行,但是当我从照片库通过电子邮件发送它时,生成的图像看起来更大(533x800 像素)并且被严重压缩。

我尝试先将 UIImage 写入文件,然后保存到相册,但仍然遇到同样的问题。

如果我使用 iPhone 上的内置屏幕截图功能,视图会正确保存到 320x480 的相册,但上面的代码似乎出于某种原因保存了更大的图像?

谢谢!

【问题讨论】:

  • 我应该添加这仅在设备上测试时发生。在模拟器上一切似乎都很好。

标签: iphone


【解决方案1】:

我找到了一个不错的解决方法,基本上是将UIImage 重新包装为PNG,然后保存重新包装的版本。代码如下所示:

UIImage* im = [UIImage imageWithCGImage:myCGRef]; // make image from CGRef
NSData* imdata =  UIImagePNGRepresentation ( im ); // get PNG representation
UIImage* im2 = [UIImage imageWithData:imdata]; // wrap UIImage around PNG representation
UIImageWriteToSavedPhotosAlbum(im2, nil, nil, nil); // save to photo album

【讨论】:

  • 这是压缩问题的解决方案。图像将以 PNG 格式存储在您的照片库中。在您的照片库中通过电子邮件发送图像进行测试。
  • 如何给图片命名?
【解决方案2】:

就我而言,我遇到了同样的错误,当我将小数点四舍五入到与 iPhone 相同的比例时解决了,试试吧,确保比例是 1.0、2.0 等而不是 3.1,那将扔掉它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多