UIImageJPEGRepresentation给EXC_BAD_ACCESS
问题描述:
在我的应用我使用的相机和照片库得到一个UIImage的,
这UIImage的,然后按比例缩小约20倍正常大小 然后我设置基于关闭的UIImage一个NSData对象。UIImageJPEGRepresentation给EXC_BAD_ACCESS
_regularImage = [self resizeImage:_takenImage width:100 height:100];
-(UIImage *)resizeImage:(UIImage *)anImage width:(int)width height:(int)height
{
CGImageRef imageRef = [anImage CGImage];
CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef);
if (alphaInfo == kCGImageAlphaNone)
alphaInfo = kCGImageAlphaNoneSkipLast;
CGContextRef bitmap = CGBitmapContextCreate(NULL, width, height, CGImageGetBitsPerComponent(imageRef), 4 * width, CGImageGetColorSpace(imageRef), alphaInfo);
CGContextDrawImage(bitmap, CGRectMake(0, 0, width, height), imageRef);
CGImageRef ref = CGBitmapContextCreateImage(bitmap);
UIImage *result = [UIImage imageWithCGImage:ref];
CGContextRelease(bitmap);
CGImageRelease(ref);
return result;
}
NSData *image1Data = UIImageJPEGRepresentation(_regularImage, 1);
我似乎无法弄清楚什么都重要的是,可能会导致这样
谢谢
LittleRy
答
这里的问题可能是你在创建位图上下文或UIImage的错误的方法。尝试调试并检查_regularImage
是否为零,或者它是否无效。为了缩放图像,我建议使用名为ANImageBitmapRep的第三方库。这是一小组类,允许在iPhone上轻松裁剪,调整大小,旋转等图像。缩放一个UIImage可以做这样的:
ANImageBitmapRep * irep = [ANImageBitmapRep imageBitmapRepWithImage:myImage];
[irep setSize:BMPointMake(myWidth, myHeight)]; // scale the image
UIImage * theImage = [irep image];
[irep release];
NSData * jpeg = UIImageJPEGRepresentation(theImage, 1);
有了这种代码我怀疑UIImageJPEGRepresentation
将是问题。 ANImageBitmapRep
类本身在内部处理CGContextRef
的东西,使您的工作更容易。
+0
我也改变了一些我的变量,所以我不能肯定地说,如果那是什么帮助。虽然我会将Libary用于许多其他项目,谢谢 –
请显示您的其他代码。错误发生在哪条线上? – jtbandes
@jtbandes他说它发生在JPEGRepresentation行上。 –