在我的应用程序中,我使用相机和照片库来获取UIImage,
然后将这个UIImage缩小大约正常大小的20倍
然后我根据UIImage设置一个NSData对象。
_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
答案 0 :(得分:2)
这里的问题可能是您正在以错误的方式创建位图上下文或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
内容,使您的工作变得更加轻松。