objective-c从调整大小的图像中获取像素值
我在从调整大小的UIimage获取值时遇到问题。 初始图像大小为500x500。 我使用的方法只有在图像大小调整(甚至是大小相等)时才会失败objective-c从调整大小的图像中获取像素值,objective-c,uiimage,resize,cgimage,cfdata,Objective C,Uiimage,Resize,Cgimage,Cfdata,我在从调整大小的UIimage获取值时遇到问题。 初始图像大小为500x500。 我使用的方法只有在图像大小调整(甚至是大小相等)时才会失败 我正在使用ImageContext和drawInRect创建新的调整大小的图像 我在另一种方法中使用CFDataRef和CFDataGetBytePtr来获得x,y的像素值 CFDataRef为所有默认图像返回@1000000。图像调整大小后,此值将更改为@90240000。与调整图像大小后为空的CFDataGetBytePtr相同 现在我怀疑这与调整大小
感谢您抽出时间来检查我的问题。我有一个类似的问题,那就是在调整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);
你能把代码贴在你调整图像大小的地方吗?它可能会给我们一些提示:)当然:)这里是://resize images+(UIImage*)imageWithImage:(UIImage*)imagescaledtosize:(CGSize)newSize{//UIGraphicsBeginImageContext(newSize);UIGraphicsBeginImageContextWithOptions(newSize,NO,0.0);[image-drawinrectmake(0,0,newSize.width,newSize.height)];UIImage*newImage=UIGraphicsGetImageFromCurrentImageContext();UIGraphicsSendImageContext();return newImage;}您可以尝试此类别,看看它是否有所改进。来源:。还有,你在主线程上做这个吗?谢谢。我读过这篇文章,其中描述的任何方法或技术都没有帮助我理解问题的本质。由于我的应用程序处于测试阶段,我只有几个方法,它们仍然位于一个类中。此时不会初始化其他线程。