0

私が取り組んでいるアプリには、ユーザーがUIImagePickerを使用して(写真ライブラリから、または新しい写真を撮って)画像をロードできるセクションがあります.2500x2000(または同様のもの) )

今、私はその画像をUIImageViewにロードします(400x320としましょう)。次に、ユーザーが他の画像/オブジェクトを選択して元の画像の上にオーバーレイし、それらを移動/サイズ変更してから、新しい画像をフォト ライブラリに保存するか、電子メールで送信できるようにします。

画像の解像度が元の画像と同じくらい高くなるように、画像を保存する最善の方法は何だろうと思っていました....今はスクリーンショットを撮っているだけですが、400x320の小さな画像が残ります.

ありがとう!


それで、私が望んでいたものを手に入れました。正しい方法でそれを行ったかどうかはわかりません。

これが基本的に私がやったことです。

//NEWWIDTH and NEWHEIGHT are double the width and height of the UIImageView that i can edit the pictures in 
CGSize newSize = CGSizeMake(NEWWIDTH, NEWHEIGHT);

UIGraphicsBeginImageContext(newSize);

//i'm resizing myOriginalImage before to how i want
[myOriginalImage drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];

UIImage *image;

//Here i go through all the other pictures i added on top and go the same drawInRect method for each of them...multiplying each value x,y,height,width by 2

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return newImage;
4

1 に答える 1

0

画像をどのように操作しているかは明らかではありません。私のアプリケーションでは、単純な UIView で Core Graphics を使用してそれを行っており、さまざまなビットマップ コンテキストを使用して同様の効果を得ています。私の見解では、私はこれを行います:

- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
[_model render:rect context:context];
}

保存するためにフル サイズのビットマップをレンダリングする場合は、CGBitmapContext を使用して同じレンダリング コードを実行します。

これはあなたにとって選択肢ではないかもしれませんが、私にとってはうまくいっています。

幸運を!

于 2011-12-10T14:18:12.100 に答える