1

iPhoneの場合、CGContextClipToMaskを使用して画像をクリップしています。

320x480で、それは美しく見えます。しかし、Retinaディスプレイ/シミュレーターでは、マスキングは320x480で行われたように見え、その後640x960にスケールアップされたように見えます-少し美味しそうです。

正しい640x960の画像が使用されています(確認のためにマークを付けました)。

私のコードは以下の通りです。誰かがそれが何であるか知っていますか?助けてくれてとてもありがたいです。どうもありがとう。

-(id)makeMainImage:(UIImage*)initMaskImg initMainImage:(UIImage*)initMainImage{

    //get images
    UIImage *mainImg = initMainImage;
    UIImage *maskImg = initMaskImg;

    //new context, to draw image into
    UIGraphicsBeginImageContext(mainImg.size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    //position context
    CGContextTranslateCTM(context, 0,480);
    CGContextScaleCTM(context, 1.0, -1.0);//flip coordinates

    //rect
    CGRect imageRect = CGRectMake(0, 0, 320, 480);

    //set mask
    CGContextClipToMask(context, imageRect, maskImg.CGImage);

    //main image
    CGContextDrawImage(context, imageRect, mainImg.CGImage);

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();    

    return newImage;
}
4

1 に答える 1

5

'UIGraphicsBeginImageContext'を使用せず、使用

UIGraphicsBeginImageContextWithOptions(size, opaque, 0); // last option is the scale option

これが網膜画像の作成方法です。

于 2012-09-06T21:11:58.500 に答える