我在从地址簿中检索数据时遇到此异常。我通过互联网检查但没有得到任何帮助。
溢出分配位图后备存储。无法返回每行320字节,-2147483648高度和1个平面的位图
我正在使用AddressBook Framework从地址簿中检索数据。是这个记忆的问题,或者是由于我在地址簿联系中设置的头像信息。
请帮忙。如果有任何建议或建议,那么请给它...
答案 0 :(得分:1)
感谢您的回复
正如您所说,我已经检查了绘制大图像或视图的所有代码。并找到了我用于调整图像大小的以下功能。现在调整图像大小将在服务器端完成。我对这个问题更加怀疑。您可以在下面的代码块中查看它。现在等待客户解决这个问题。
再次感谢您的帮助。
-(NSData *)getCompressedImageDataFromData:(NSData *)imData
{
NSImage *pImage = [[[NSImage alloc] initWithData:imData] autorelease];
NSSize orgSize = [pImage size];
int widthInput, heightInput;
widthInput = orgSize.width;
heightInput = orgSize.height;
if(widthInput <= 72 && heightInput <= 72)
return imData;
double newheight = heightInput;
NSSize newSize;
if(widthInput >= 72)
{
double ratio;
ratio = widthInput / heightInput;
newheight = 72 / ratio;
newSize = NSMakeSize (72, newheight);
}
else
newSize = NSMakeSize(widthInput, newheight);
NSImage *outputImage = [[[NSImage alloc] initWithSize:newSize] autorelease];
if(![outputImage isValid])
return nil;
[outputImage lockFocus];
[[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationHigh];
[pImage drawInRect:NSMakeRect(0, 0, newSize.width, newSize.height)
fromRect:NSZeroRect operation:NSCompositeCopy fraction:1.0];
[outputImage unlockFocus];
NSData *imageData = [outputImage TIFFRepresentationUsingCompression:NSTIFFCompressionJPEG factor:0];
return [imageData mutableCopy];
}
-(NSData *)getCompressedImageDataFromData:(NSData *)imData
{
NSImage *pImage = [[[NSImage alloc] initWithData:imData] autorelease];
NSSize orgSize = [pImage size];
int widthInput, heightInput;
widthInput = orgSize.width;
heightInput = orgSize.height;
if(widthInput <= 72 && heightInput <= 72)
return imData;
double newheight = heightInput;
NSSize newSize;
if(widthInput >= 72)
{
double ratio;
ratio = widthInput / heightInput;
newheight = 72 / ratio;
newSize = NSMakeSize (72, newheight);
}
else
newSize = NSMakeSize(widthInput, newheight);
NSImage *outputImage = [[[NSImage alloc] initWithSize:newSize] autorelease];
if(![outputImage isValid])
return nil;
[outputImage lockFocus];
[[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationHigh];
[pImage drawInRect:NSMakeRect(0, 0, newSize.width, newSize.height)
fromRect:NSZeroRect operation:NSCompositeCopy fraction:1.0];
[outputImage unlockFocus];
NSData *imageData = [outputImage TIFFRepresentationUsingCompression:NSTIFFCompressionJPEG factor:0];
return [imageData mutableCopy];
}
答案 1 :(得分:0)
您是在创建一个大型视图或图像,您要在地址簿中绘制多个联系人吗?听起来你正试图创建太大的图像/视图。