0

私はうまく利用することがUIViewできdrawScreenます

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

UIImageView上記のサブビューとしてmyを追加しました。UIViewたとえばdrawScreen、画像の上に描画しているように見えます。

今、私は描画で画像を保存したいのですが、私もこの部分を使用して行いました

UIGraphicsBeginImageContext(CGSizeMake(drawScreen.frame.size.width, drawScreen.frame.size.height));

問題:
問題は、結果の保存画像のサイズが大きくdrawScreen、元の画像の品質が良いことです。例えば、

サイズdrawScreenは300x300です

元の画像のサイズは640x640です

結果の画像のサイズも300x300です。

編集して元のサイズの画像を保存するにはどうすればよいですか?

4

2 に答える 2

1

単純に元の画像のサイズに置き換えることから始めdrawScreen.frame.size.widthます。drawScreen.frame.size.height

まず、UIView画像のサイズである新しいインスタンスを作成する必要があります(そしてそれに画像を追加します)。次に、アートを拡大縮小して再描画する必要があります。画像の保存方法に応じて、座標に計算された係数を掛けるか、何かをレンダリングしてから拡大する必要があります。いずれの場合も、拡大したグラフィックを新しいの上にサブビューとして追加しますUIView。次に、を使用しUIGraphicsGetCurrentImageContextます。

このドキュメントをお読みください。

また、この質問は多少役立つかもしれません。

于 2013-03-27T06:40:58.507 に答える
0

を使用して編集すると、元のサイズの画像を保存できUIScrollViewます。2本の指でのみスクロールできるシングルフィンガースクロールを無効にし、1UIScrollView本の指で画像を描画しました。元のサイズの画像を保存するために次のコードを使用しました

UIGraphicsBeginImageContext(self.scrollView.contentSize);
 {
     CGPoint savedContentOffset = self.scrollView.contentOffset;
     CGRect savedFrame = self.scrollView.frame;

     self.scrollView.contentOffset = CGPointZero;
     self.scrollView.frame = CGRectMake(0, 0, self.scrollView.contentSize.width, self.scrollView.contentSize.height);

     [self.scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];
     UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
     UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
     self.scrollView.contentOffset = savedContentOffset;
     self.scrollView.frame = savedFrame;
 }
 UIGraphicsEndImageContext();
于 2013-03-27T09:32:24.733 に答える