0

我在从调整大小的 UIimage 中获取值时遇到问题。初始图像尺寸为 500x500。我使用的方法只有在调整图像大小(甚至大小相等)时才会失败

  1. 我正在使用 ImageContext 和 drawInRect 创建新的调整大小的图像。

  2. 我在另一种方法中使用 CFDataRef 和 CFDataGetBytePtr 来获取 x,y 处的像素值。

CFDataRef 为所有默认图像返回 @1000000。调整图像大小后,此值将更改为 @90240000。与调整图像大小后为空的 CFDataGetBytePtr 相同。

现在我怀疑这与调整大小的图像实际上是一个新图像这一事实有关,但我不能确定,所以我非常感谢任何关于如何解决这个问题的解释或建议。

感谢您花时间查看我的问题。

4

1 回答 1

0

我有一个类似的问题,即在调整 UIImage 的大小后,我无法使用CFDataGetBytePtr获得正确的值。我目前不明白原因,但另一种获取 UIImage 值的方法有效。代码如下:

size_t width = CGImageGetWidth(img);
size_t height = CGImageGetHeight(img);


size_t rowByteSize = width *  4;
unsigned char * data = new unsigned char[height * rowByteSize];

CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(data, width, height, 8, rowByteSize,
                                             colorSpaceRef,
                                             kCGImageAlphaPremultipliedLast);
CGContextSetBlendMode(context, kCGBlendModeCopy);
CGContextDrawImage(context, CGRectMake(0.0, 0.0, width, height), img);
CGContextRelease(context);

CGColorSpaceRelease(colorSpaceRef);
于 2015-12-30T09:15:39.463 回答