首页 文章

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

提问于
浏览
0

对于物理缩放任何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 / wrong !!它是源宽度!/,colorSpace,bitmapInfo);

1 回答

  • 4

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

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

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

相关问题