CoreGraphics图像大小调整
此代码来自Apple的WWDC 2011会议318 – iOS性能深度,并使用CoreGraphics从服务器托pipe的映像创build缩略图。
CGImageSourceRef src = CGImageSourceCreateWithURL(url); NSDictionary *options = (CFDictionaryRef)[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:1024 forKey:(id)kCGImageSourceThumbnailMaxPixelSize]; CGImageRef thumbnail = CGImageSourceCreateThumbnailAtIndex(src,0,options); UIImage *image = [UIImage imageWithCGImage:thumbnail]; CGImageRelease(thumbnail); CGImageSourceRelease(src);
但它不起作用,文档并没有真正的帮助。 在iOS文档中,可以使用CGImageSource
CGImageSourceRef
CGImageSourceCreateThumbnailAtIndex
在Mac OS X v10.4或更高版本中
我怎样才能使这个工作?
编辑
这些是我得到的编译器错误:
- 使用未声明的标识符'CGImageSourceRef'
- 使用未声明的标识符'kCGImageSourceThumbnailMaxPixelSize'
- 使用未声明的标识符'src'
- 函数CGImageSourceCreateThumbnailAtIndex的隐式声明在C99中是无效的
- 在C99中,函数'CGImageSourceRelease'的隐式声明是无效的
- 函数'CGImageSourceCreateWithURL'的隐式声明在C99中是无效的
学校男孩的错误。
没有添加#import <ImageIO/ImageIO.h>
尝试图像大小调整:
-(UIImage*) resizedImage:(UIImage *)inImage:(CGRect) thumbRect { CGImageRef imageRef = [inImage CGImage]; CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef); // There's a wierdness with kCGImageAlphaNone and CGBitmapContextCreate // see Supported Pixel Formats in the Quartz 2D Programming Guide // Creating a Bitmap Graphics Context section // only RGB 8 bit images with alpha of kCGImageAlphaNoneSkipFirst, kCGImageAlphaNoneSkipLast, kCGImageAlphaPremultipliedFirst, // and kCGImageAlphaPremultipliedLast, with a few other oddball image kinds are supported // The images on input here are likely to be png or jpeg files if (alphaInfo == kCGImageAlphaNone) alphaInfo = kCGImageAlphaNoneSkipLast; // Build a bitmap context that's the size of the thumbRect CGContextRef bitmap = CGBitmapContextCreate( NULL, thumbRect.size.width, // width thumbRect.size.height, // height CGImageGetBitsPerComponent(imageRef), // really needs to always be 8 4 * thumbRect.size.width, // rowbytes CGImageGetColorSpace(imageRef), alphaInfo ); // Draw into the context, this scales the image CGContextDrawImage(bitmap, thumbRect, imageRef); // Get an image from the context and a UIImage CGImageRef ref = CGBitmapContextCreateImage(bitmap); UIImage* result = [UIImage imageWithCGImage:ref]; CGContextRelease(bitmap); // ok if NULL CGImageRelease(ref); return result; }
我在我的代码中使用它一段时间,但我不记得它的来源
尝试这也调整UIImage的大小,而不是完全加载到内存?