2012-01-10 16 views
1

UIImagepicker setEditingをYesメソッド(またはカメラアプリのように)を使ってカメラで撮影するときと同様に、写真ライブラリからユーザーが触れた画像を縮小しようとしています。iPhoneの写真ライブラリからスケールと保存UIImage?

私はtouchesmovedに基づいていくつかのパラメータを渡すが、私は希望の効果を得ていないのですか?私はおそらく何が間違っているのですか?

-(UIImage*)scaleToSize:(UIImage *)img:(CGSize)size 
{ 


// Create a bitmap graphics context 
    // This will also set it as the current context 
    UIGraphicsBeginImageContext(size); 

// Draw the scaled image in the current context 
[img drawInRect:CGRectMake(0, 0, size.width, size.height)]; 

// Create a new image from current context 
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 

// Pop the current context from the stack 
UIGraphicsEndImageContext(); 

// Return our new scaled image 
return scaledImage; 
} 

-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UIImage *img = [self scaleToSize:imgView.image:CGSizeMake(touch1.x,touch1.y)]; 
     imgView.image=img; 
} 

また、私はスケーリングされた画像を何とかして保存することができますか?

+0

は、あなたがscaleToSizeにあなたの呼び出しに固定値を入れてみましたがありますか?現時点でどのような結果が得られますか? –

+0

私は修正値を追加して、修正値で動作します。問題はあまり値ではありません。 – hemant

答えて

1

コメントの上にビルドすると、指定した矩形に画像が描画されるので画像が歪み、元の画像と同じ縦横比(幅/高さ)でない場合はゆがんで表示されます。

あなたの新しい幅と高さは、例えば、同じアスペクト比を有することを確認するためにいくつかのロジックを必要とする:

CGFloat newHeight = imageView.frame.size.height * size.width/imageView.frame.size.width; 

、あなたのグラフィックスコンテキストsize.widthとnewHeightを作成してから、このにあなたのイメージを描画した場合rectはアスペクト比を維持します。

余分なロジックを追加して、幅が与えられたときに新しい高さまたは新しい高さを作成したい場合は、どのディメンションが最大の変更であるかによって異なります。 IMG:それは間違っている、あなたのタッチ・ロジックまたはあなたの方法であるかどうかを確認するために、このことができます

希望、

デイブ

関連する問題