3

2つの画像をマージしてから、次のコードを適用してスクリーンショットを撮ります。

UIGraphicsBeginImageContext(size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
img_AddText=viewImage;

[dragView removeFromSuperview];
imgV_SelectedImg.image=nil;
imgV_SelectedImg.image=img_AddText;
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);

問題は、最終的な画像の品質が低下すると、ぼやけてしまうことです。

4

5 に答える 5

9

UIGraphicsBeginImageContext の withOptions バージョンを使用してみてください

UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
于 2012-06-13T18:04:15.980 に答える
1

UIImage役立つクラスのカテゴリを作成しました。こんなふうになります:

+ (UIImage*)imageWithView:(UIView *)view opaque:(BOOL)opaque bgColor:(UIColor*)bgColor{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, opaque, [[UIScreen mainScreen] scale]);

    if(!opaque){
        [bgColor set];
    }
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}

それは私にとってはうまくいきます。ブレは検出されませんでした。使ってみてください。それでも問題が解決しない場合は、おそらく保存コードに問題があります...

乾杯... :)

于 2012-06-13T20:13:40.927 に答える
1

UIGraphicsBeginImageContextWithOptions(サイズ、いいえ、2.0); これは、スケールを1.0から2.0に増やすことで問題を解決します

于 2012-06-14T06:45:41.660 に答える
0

Retina ディスプレイ用の画像を提供しましたか? あなたはそれをチェックする必要があります。シミュレーター (網膜) で実行している可能性があります。

于 2012-06-13T17:57:46.763 に答える