フォトアルバムに画像を保存しようとしています.次のコードでこれを行っています:
CGSize targetSize =self.view.frame.size;
UIGraphicsBeginImageContext(targetSize);
//UIGraphicsBeginImageContextWithOptions(targetSize, NO, 2.0);
// これも試しましたが改善しませんでした
UIImage* image1 = mkImage1.image;
UIImage* image2 = mkImage2.image;
UIImage* image3 = mkImage3.image;
CGRect rectImage1 = CGRectMake(mkImage1.frame.origin.x , mkImage1.frame.origin.y , mkImage1.frame.size.width , mkImage1.frame.size.height );
CGRect rectImage2 = CGRectMake(mkImage2.frame.origin.x , mkImage2.frame.origin.y , mkImage2.frame.size.width , mkImage2.frame.size.height );
CGRect rectImage3 = CGRectMake(mkImage3.frame.origin.x , mkImage3.frame.origin.y , mkImage3.frame.size.width , mkImage3.frame.size.height );
[image1 drawInRect:rectImage1]; //クラッシュライン
[image2 drawInRect:rectImage2];
[image3 drawInRect:rectImage3];
tempImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(tempImage, nil,nil,nil);
image1 を描画しようとすると、アプリがクラッシュします。ただし、その行にコメントを付けると、他のすべての画像は問題なく適切に保存されます..
私のログ情報は私にこの情報を与えます:
ImageIO`ImageIO_ABGR_TO_ARGB_8Bit:
0x330abc70: {r4、r5、r6、r7、lr} をプッシュ
0x330abc72: r7、sp、#12 を追加
0x330abc74: push.w {r8、r10、r11}
0x330abc78: ldr r1、[r0]
0x330abc7a:ldr r2、[r0、#12]
0x330abc7c: cmp.w r2、r1、lsl #2
0x330abc80: ブロ 0x330abd06 ; ImageIO_ABGR_TO_ARGB_8Bit + 150
0x330abc82:ldr r3、[r0、#24]
0x330abc84: lsls r2、r1、#2
0x330abc86: cmp r3、r2
0x330abc88: ブロ 0x330abd06 ; ImageIO_ABGR_TO_ARGB_8Bit + 150
0x330abc8a:ldr r2、[r0、#4]
0x330abc8c: cmp r2、#0
0x330abc8e: beq 0x330abd06 ; ImageIO_ABGR_TO_ARGB_8Bit + 150
0x330abc90: bic lr、r1、#7
0x330abc94:ldr r3、[r0、#8]
0x330abc96:ldr.w r12、[r0、#20]
0x330abc9a: sub.w r4、r1、lr
0x330abc9e: asrs r5、r1、#3
0x330abca0: 移動 r6、r12
0x330abca2: 移動 r8、r3
0x330abca4: cbz r5、0x330abcbe ; ImageIO_ABGR_TO_ARGB_8Bit + 78
0x330abca6: 移動 r8、r3
0x330abca8: 移動 r9、r5
0x330abcaa: 移動 r6、r12
0x330abcac: vld4.8 {d0、d1、d2、d3}、[r8]!
0x330abcb0: vswp d0、d2
0x330abcb4: vst4.8 {d0, d1, d2, d3}, [r6]! // EXC_BAD_ACCESS
0x330abcb8: subs.w r9、r9、#1
0x330abcbc: bne 0x330abeac ; slab_dealloc + 132
0x330abcbe: cmp lr、r1
0x330abcc0: bge 0x330abcf8 ; ImageIO_ABGR_TO_ARGB_8Bit + 136
0x330abcc2: add.w r8、r8、#2
0x330abcc6: r6、#2 を追加
0x330abcc8: 移動 r9、r4
0x330abcca: ldrb.w r11, [r8]
0x330abcce: subs.w r9、r9、#1
0x330abcd2: ldrb r10、[r8、#-2]
0x330abcd6: strb r11, [r6, #-2]
0x330abcda: ldrb r11, [r8, #-1]
0x330abcde: strb r11, [r6, #-1]
//****************/// スレッド 1、キュー : com.apple.main-thread -[UIImage drawInRect:] () の 0x32ac2526 -[MyAppViewController saveToAlbum] の 0x00018e32
その画像をpngからjpgに変換すると、すべてうまくいきます。しかし、保存するだけのpng形式が必要です。