0

画像からバイトを取得し、いくつかの操作を行う iPhone アプリがあります。最後に、バイトが UIImage にコピーされます。3GS でテストしたところ、問題なく動作しました。クラッシュはありません。私の友人の何人かが 4S でテストすると、アドホックにクラッシュします。testflight を使用してクラッシュ レポートをキャプチャし、シンボリケートしました。これがクラッシュするコードです。4s から 3gs の同じイメージを使用しましたが、やはりクラッシュしませんでした。根本的な原因を見つけて修正する方法を知っている人はいますか?

UIImage を CGImageRef に変換すると、異なる幅と高さが返されることはありませんか??

-(UIImage *) CopyBytesToUIImage:(int*)img 
                               :(int) width
                               :(int) height 
{

    //(int*)img was build by extracting bytes from OriginalSourceImage
    CGImageRef inImage = OriginalSourceImage.CGImage;
    CFDataRef m_DataRef = CGDataProviderCopyData(CGImageGetDataProvider(inImage));  
    UInt8 * m_OutPixelBuf = (UInt8 *) CFDataGetBytePtr(m_DataRef);  

    int iStep,jStep;

    for (int i = 0; i < height; i++) 
    {
        iStep = i*width*4;
        for (int j = 0; j < width; j++) 
        {
            jStep = j*4;
            m_OutPixelBuf[iStep + jStep ] = m_OutPixelBuf[iStep + jStep +1] =    m_OutPixelBuf[iStep + jStep +2] = img.arr2D[i][j];

            //Test flight shows that it crashes during this assignment.
        }
    }   

    CGContextRef ctx = CGBitmapContextCreate(m_OutPixelBuf,  
                                             CGImageGetWidth(inImage),  
                                             CGImageGetHeight(inImage),  
                                             CGImageGetBitsPerComponent(inImage),
                                             CGImageGetBytesPerRow(inImage),  
                                             CGImageGetColorSpace(inImage),                                          CGImageGetBitmapInfo(inImage) 
                                             ); 

    CGImageRef imageRef = CGBitmapContextCreateImage(ctx);  
    CGContextRelease(ctx);
    UIImage *finalImage = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    CFRelease(m_DataRef);
    m_OutPixelBuf = nil;
    return finalImage;

}

ここにテストフライトデータがあります

1.  0 MyApp 0x000cf6ae testflight_backtrace + 238
2.  1 MyApp 0x000d0398 TFSignalHandler + 264
3.  2 libsystem_c.dylib 0x3a63de92 _sigtramp + 42
4.  3 MyApp 0x0009e328 -[clsEditor CopyBytesToUIImage:::] + 176
5.  4 MyApp 0x0009e1c4 -[clsEditor Sketch:] + 596

よろしくお願いします。

4

0 に答える 0