だから私は2枚の画像を取り、それらを組み合わせる機能を持っています。2つの小さい画像で試してみるとうまくいくので、画像が大きすぎるかもしれませんが、よくわかりません。そこで、カメラで写真を撮り、アルバムから開いてみます。画像を選択し、この関数を使用して別の画像と組み合わせます。
- (UIImage*)imageByCombiningImage:(UIImage*)firstImage withImage:(UIImage*)secondImage {
UIImage *image = nil;
float scale = 0.5f;
CGSize newImageSize = CGSizeMake(MAX(firstImage.size.width, secondImage.size.width), MAX(firstImage.size.height, secondImage.size.height));
NSLog(@"reached image by combining image");
//crashes here when the image has been selected from an album (secondImage).
// runs fine when the image has been taken from the camera. (secondImage).
if (UIGraphicsBeginImageContextWithOptions != NULL) {
UIGraphicsBeginImageContextWithOptions(newImageSize, NO, [[UIScreen mainScreen] scale]);
} else {
UIGraphicsBeginImageContext(newImageSize);
}
[firstImage drawAtPoint:CGPointMake(roundf((newImageSize.width-firstImage.size.width)/2),
roundf((newImageSize.height-firstImage.size.height)/2))];
UIImage *scaledImage =
[UIImage imageWithCGImage:[secondImage CGImage]
scale:scale orientation:UIImageOrientationUp];
[scaledImage drawAtPoint:CGPointMake(roundf((100)),
roundf((100)))];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
私がこの行に到達したとき:
if (UIGraphicsBeginImageContextWithOptions != NULL) {
UIGraphicsBeginImageContextWithOptions(newImageSize, NO, [[UIScreen mainScreen] scale]);
} else {
UIGraphicsBeginImageContext(newImageSize);
}
静かにクラッシュします。メモリの問題かもしれないと思いますか?このメソッドも非同期的に呼び出されています。