对于物理缩放任何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);
答案 0 :(得分:4)
这是我的原始解决方案。我还不确定它是否有效。
size_t bytesPerRow = CGImageGetBytesPerRow(cgImage);
size_t bytesPerPixel = bytesPerRow / widthPX;
size_t destBytesPerRow = bytesPerPixel * destWidth;
我试图做的是:首先,根据每行的字节数和源图像中的像素数计算每个像素的字节数。然后将其与目标宽度相乘,得到每行目标图像的字节数。