我正在尝试拍摄我应用当前视图的屏幕截图并将其保存到相册(然后通过电子邮件发送或彩信)。
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正确保存到相册,但上面的代码似乎会因某种原因保存更大的图像?
谢谢!
答案 0 :(得分:20)
我找到了一个不错的解决方法,即基本上将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
答案 1 :(得分:1)
我有同样的错误,就我而言,当我将小数点四舍五入到与iPhone相同的比例时,解决了问题,尝试它,确保比例是1.0,2.0等而不是3.1,这将是扔掉它。