3

次のコードは、画像を 2 つに分割します。Retina 以外のデバイスでは正常に動作しているように見えますが、Retina デバイスでは異なる出力が得られます。誰かがそれを修正するのを手伝ってくれませんか? ありがとう..

マイコード

UIImage *img = [UIImage imageNamed:@"apple.png"];

CGSize sz = [img size];
UIGraphicsBeginImageContextWithOptions(CGSizeMake(sz.width/2, sz.height), NO, 0);
[img drawAtPoint:CGPointMake(-sz.width/2, 0)];
UIImage *right = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
rightView = [[[UIImageView alloc] initWithImage:right] autorelease];
rightView.frame = CGRectMake(self.view.frame.size.width/2, 0, self.view.frame.size.width/2, self.view.frame.size.height);

CGImageRef leftRef = CGImageCreateWithImageInRect([img CGImage],CGRectMake(0,0,sz.width/2,sz.height));
UIGraphicsBeginImageContextWithOptions(CGSizeMake(sz.width/2, sz.height), NO, 0);
CGContextRef con = UIGraphicsGetCurrentContext();
CGContextDrawImage(con, CGRectMake(0,0,sz.width/2.0,sz.height), leftRef);
UIImage *left = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImage *rotatedImage = [left imageRotatedByDegrees:180.0];

leftView = [[[UIImageView alloc] initWithImage:rotatedImage] autorelease];
leftView.frame = CGRectMake(0, 0, self.view.frame.size.width/2, self.view.frame.size.height);
leftView.transform = CGAffineTransformMake(-1,0,0,1,0,0);

CGImageRelease(leftRef);


[self.view addSubview:leftView];
[self.view addSubview:rightView];

非網膜

ここに画像の説明を入力

網膜

ここに画像の説明を入力

PS: これが重要かどうかはわかりませんが、apple.png には @2x バージョンがあります。

4

2 に答える 2

2

プロパティは、[-UIImage size]ピクセルではなくポイントでサイズを返します。おそらく[-UIImage scale]、画像がどのように拡大縮小されるかを理解するために電話をかける必要があります。

于 2012-09-30T02:29:24.647 に答える
0

で左側面図を作成する場合

leftView = [[[UIImageView alloc] initWithImage:rotatedImage] autorelease];, 

正しいスケールを指定していません。この方法でUIImageを作成するのではなく、次のようにします。

UIImage *left = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImage *rotatedImage = [left imageRotatedByDegrees:180.0];

CGImageRefを作成してから、を使用してUIImageを初期化してみてください

[UIImage imageWithCGImage:scale:orientation:]

正しいスケールを指定しながら。生の画像データをコンテキストからCGImageRefに変換する方法はいくつかあります。または、作成した画像を使用してUIImageのCGImageプロパティを使用することもできます。

于 2012-10-05T03:40:16.323 に答える