3

このコードは、AppleのWWDC 2011 Session 318-iOS Performance in Depthからのものであり、CoreGraphicsを使用してサーバーでホストされている画像からサムネイルを作成します。

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 OSXv10.4以降の場合

どうすればこれを機能させることができますか?

編集

これらは私が得ているコンパイラエラーです:

  • 宣言されていない識別子「CGImageSourceRef」の使用
  • 宣言されていない識別子の使用'kCGImageSourceThumbnailMaxPixelSize'
  • 宣言されていない識別子「src」の使用
  • 関数'CGImageSourceCreateThumbnailAtIndex'の暗黙の宣言はC99では無効です
  • 関数'CGImageSourceRelease'の暗黙の宣言はC99では無効です
  • 関数'CGImageSourceCreateWithURL'の暗黙の宣言はC99では無効です
4

2 に答える 2

15

男子生徒の間違い。

追加しませんでした#import <ImageIO/ImageIO.h>

于 2012-06-12T10:11:37.377 に答える
3

画像のサイズ変更をお試しください:

-(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を完全にメモリにロードせずに、これも サイズ変更してみてください。

于 2012-06-12T09:58:32.123 に答える