フォトアルバムに画像を保存しようとしています.次のコードでこれを行っています:
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形式が必要です。