2015-12-08 46 views
0

从调整大小的UIimage获取值时遇到问题。 初始图像大小为500x500。只有当图像被调整大小(甚至到相同大小)objective-c从调整大小的图像中获取像素值

  1. 我使用ImageContext和drawInRect来创建新的调整后的图像 我使用的方法将失败。

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

对于所有默认图像,CFDataRef返回@ 1000000。一旦图像被调整大小,该值将更改为@ 90240000。调整图像大小后,CFDataGetBytePtr为空。

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

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

+0

你可以发布代码调整图像的大小吗?它可能会给我们一些提示 –

+0

当然:)这是: //调整图像 +(UIImage的*)imageWithImage:(*的UIImage)图像scaledToSize:(CGSize)新尺寸{// UIGraphicsBeginImageContext(新尺寸); UIGraphicsBeginImageContextWithOptions(newSize,NO,0.0); [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; } – msavic

+0

你可以尝试这个类别,看看它是否改善了一些东西http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/。来源:http://stackoverflow.com/questions/2658738/the-simplest-way-to-resize-an-uiimage。另外,你是否在主线程上执行此操作? –

回答

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);