2009-07-08 10 views
0

画像が90度回転するため、幅がheightに等しい新しい画像を作成したいです。新しい画像変更の次元を作成しましたが、データを正確に画像に配置しません。heightとwidth、widthが同じ高さの新しい画像を作成すると、画像の回転に問題が発生する

CGImageRef imageRef = OriginalImage.CGImage; /////////////新しい高さは、元画像の幅に等しい size_t newHeight = CGImageGetWidth(imageRef); size_t newWidth = CGImageGetHeight(imageRef); size_t bitsPerComponent = CGImageGetBitsPerComponent(imageRef); size_t bitsPerPixel = CGImageGetBitsPerPixel(imageRef);

CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB(); 
CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef); 
CFDataRef argbData = CFDataCreate(NULL,rotatedPixelData,originalImageDataLength); 
CGDataProviderRef provider = CGDataProviderCreateWithCFData(argbData); 

CGImageRef nimage = CGImageCreate(NewWidth,NewHeight,bitsPerComponent, bitsPerPixel,bytesPerRow,colorspace,bitmapInfo,provider, NULL, true, kCGRenderingIntentDefault); 

CGImageCreateのパラメータを変更する必要はありますか?

答えて

1

おそらくnewBytesPerRowを計算する必要があります。

これは、新しい画像のサイズが元と同じでない可能性があることを意味します。originalImageDataLengthを再計算してください。

関連する問題