我遇到了图像旋转的问题。我想创建一个高度等于宽度的新图像,因为旋转了90度。但是创建的新图像会改变尺寸,但不会准确地将数据放在图像中。
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的参数?
答案 0 :(得分:1)
您可能需要计算newBytesPerRow
。
这意味着新图像的大小可能不同
作为原文,所以也重新计算originalImageDataLength
。