gpt4 book ai didi

objective-c - UIImageJPEGRepresentation 给出 EXC_BAD_ACCESS

转载 作者:搜寻专家 更新时间:2023-10-30 20:22:22 27 4
gpt4 key购买 nike

在我的应用程序中,我使用相机和照片库来获取 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);

我似乎想不出任何其他可能导致这种情况的原因

谢谢

小瑞

最佳答案

这里的问题可能是您以错误的方式创建位图上下文或 UIImage。尝试调试并检查 _regularImage 是否为 nil,或者它是否无效。对于缩放图像,我建议使用名为 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 内容,使您的工作更加轻松。

关于objective-c - UIImageJPEGRepresentation 给出 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7136041/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com