私はそのようにUIImageを生成しています:
//scale UIView size to match underlying UIImage size
float scaleFactor = 10.0
UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, scaleFactor);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
UIImage のサイズは 3200x2400 で、これが必要です。ただし、電子メールの添付ファイルとして送信するために PNG 形式に変換すると、次のようになります。
NSData* data = UIImagePNGRepresentation(image);
MFMailComposeViewController* controller;
...
[controller addAttachmentData:data mimeType:mimeType fileName:.fileName];
最終的には 720 ppi の画像になり、したがって ~12.8 mb になります。これは大きすぎます。
720 ppi がどこから来ているのかわかりません。UIImage は 72 ppi の画像から生成されます。それは何か関係があるに違いありません:
UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque,scaleFactor);
基になる UIImage (UIView の境界よりもはるかに大きい) に基づいて UIView から UIImage を作成する必要がありますが、元の ppi を維持する必要があります。720 ppi は、電子メールの添付ファイルとしては実用的ではありません。
何かご意見は?