1

フォトアルバムに画像を保存しようとしています.次のコードでこれを行っています:

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形式が必要です。

4

0 に答える 0