如何确定CGImage的每像素组件数?

时间:2014-02-12 12:12:09

标签: ios iphone uiimage uikit core-graphics

对于物理缩放任何UIImage的方法,我需要创建具有与图像完全相同设置的位图上下文,目标宽度和高度除外。

到目前为止,这是我的代码。缺少的内容:如何为CGBitmapContextCreate的bytesPerRow参数确定CGImage的每个像素的组件数?

CGImageRef cgImage = self.CGImage;
size_t widthPX = CGImageGetWidth(cgImage);
size_t heightPX = CGImageGetHeight(cgImage);
size_t bitsPerComponent = CGImageGetBitsPerComponent(cgImage);
size_t bitsPerPixel = CGImageGetBitsPerPixel(cgImage);
size_t bytesPerRow = CGImageGetBytesPerRow(cgImage);
CGColorSpaceRef colorSpace = CGImageGetColorSpace(cgImage);
CGColorSpaceModel colorSpaceModel = CGColorSpaceGetModel(colorSpace);
CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(cgImage);

CGContextRef ctx = CGBitmapContextCreate(NULL,destWidth,destHeight,bitsPerComponent,bytesPerRow / 错误!!它是源宽度! /,colorSpace,bitmapInfo);

1 个答案:

答案 0 :(得分:4)

这是我的原始解决方案。我还不确定它是否有效。

size_t bytesPerRow = CGImageGetBytesPerRow(cgImage);
size_t bytesPerPixel = bytesPerRow / widthPX;
size_t destBytesPerRow = bytesPerPixel * destWidth;

我试图做的是:首先,根据每行的字节数和源图像中的像素数计算每个像素的字节数。然后将其与目标宽度相乘,得到每行目标图像的字节数。