再スケーリングされたコピーを取得するために、このUIImage拡張機能を作成しました。
-(UIImage*)scaleByRatio:(float) scaleRatio
{
CGSize scaledSize = CGSizeMake(self.size.width * scaleRatio, self.size.height * scaleRatio);
//The output context.
UIGraphicsBeginImageContext(scaledSize);
CGContextRef context = UIGraphicsGetCurrentContext();
//Percent (101%)
#define SCALE_OVER_A_BIT 1.01
//Scale.
CGContextScaleCTM(context, scaleRatio * SCALE_OVER_A_BIT, scaleRatio * SCALE_OVER_A_BIT);
[self drawAtPoint:CGPointZero];
//End?
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
ほとんどの場合は機能しますが、最近のプロジェクトでは元の画像を出力します(UIImageJPEGRepresentationとimageWithDataを使用してスケーリングした直後にディスクに保存します:) 。
バックグラウンドスレッド内でメソッドを呼び出します。これが問題でしょうか?どうすればこれをスレッドセーフに書き直すことができますか(問題がスレッドによって引き起こされていると仮定します)。