イメージのサイズを変更するこのメソッドを作成しました。マルチスレッドのuiimageサイズ変更エラー
+ (UIImage *)imageFromImage:(UIImage *)image scaledToSize:(CGSize)newSize {
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
すべてが正常に動作しますが、私はdrawInRect:
でそれがクラッシュし、別のスレッドで、このメソッドを呼び出した場合、私は別のスレッドで、このメソッドを呼び出すためにこれらの行を使用します。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
for (int i = 0; i < [images count]; i++){
UIImage *img = [UIImage imageWithContentsOfFile:[images objectAtIndex:i]];
CGFloat wImg = img.size.width * imageViewSize/img.size.height;
CGSize size = CGSizeMake(wImg, imageViewSize);
img = [Utility imageFromImage:img scaledToSize:size];
}
});
どのようにすることができます私がやります?
メインキューのUIスタッフを呼び出す必要があります。 – shallowThought
私はバックグラウンドでイメージ処理を行うことができませんか? – Pol