3

UIImageView クラスで画像をレンダリングする際に問題が発生しました。ピクセル化は、主に表示しようとしている画像の端で発生するようです。

プロパティ「Render with edge antialiasing」を無駄に変更しようとしました。

画像ファイルには、画面に表示されるよりも大きな画像が含まれています。

画像の品質を王道にいじってから表示しているようです。ここに画像を投稿しようとしましたが、StackOverflow がその権限を拒否しています。そこで、何が起こっているのかへのリンクを次に示します。

http://i.imgur.com/QpUOTOF.png

この画像の太陽が問題です。何か案は?

4

4 に答える 4

6

オンザフライの画像サイズ変更は迅速で低品質です。バンドルされたイメージの場合、ダウンサイズされたバージョンを含めるために追加のバンドル スペースを使用する価値があります。UIImageダウンロードした画像の場合、画像のプロパティを設定する前にCore Graphics で新しいサイズにサイズ変更することで、より良い結果を得ることができます。

CGSize newSize = CGSizeMake(newWidth, newHeight);

UIGraphicsBeginImageContextWithOptions(newSize, // context size
                                       NO,      // opaque?
                                       0);      // image scale. 0 means "device screen scale"
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
[bigImage drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
于 2013-04-05T20:23:05.913 に答える
3

画像で特定のさとを取得するには、次のメソッドを使用します

+ (UIImage*)resizeImage:(UIImage*)image withWidth:(int)width withHeight:(int)height
{
    CGSize newSize = CGSizeMake(width, height);
    float widthRatio = newSize.width/image.size.width;
    float heightRatio = newSize.height/image.size.height;

    if(widthRatio > heightRatio)
    {
        newSize=CGSizeMake(image.size.width*heightRatio,image.size.height*heightRatio);
    }
    else
    {
        newSize=CGSizeMake(image.size.width*widthRatio,image.size.height*widthRatio);
    }


    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}

このメソッドは、指定した特定のサイズで NewImageを返します。

于 2013-04-05T20:34:34.610 に答える
0

画像の大きさと imageView のサイズは? UIImageView に依存して縮小しないでください。おそらく手動でサイズを変更する必要があります。これにより、メモリ効率も少し向上します。

于 2013-04-05T20:21:59.730 に答える
0

私は次のようなカテゴリを使用します: >>>github リンク <<<

画像のリサイズを行います。

これにより、角を丸くするなどの他の優れた機能も提供されます。

また、エイリアシングを避けるために画像を回転させたい場合は、画像の端に透明な境界線が必要であることにも注意してください。

于 2013-04-05T20:57:28.587 に答える