2016-09-18 11 views
-1

写真の作物アプリを作ろうとしていますが、サイズの大きい画像を読み込んで480幅と800高さ(縦横比を維持)にしたいのですが、私はそれを保存すると結果が低品質になるので、私はビットマップの元のサイズを維持するためにキャンバスを拡大することに決めました。 私は元のサイズを保持する必要がありますが、画面に収まるように画像を拡大しますか?Androidのスケールキャンバスが動作しません

public void setBitmap(Bitmap bitmap) { 

finalBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); 
myCanvas = new Canvas(finalBitmap); 
myCanvas.drawBitmap(bitmap, 0, 0, null); 
myCanvas.scale(scaleFactor,scaleFactor); 
isLoaded = true; 
} 

ドロー法:ここ

は私のコードである私は、0.9f、480でスケールファクタを変更

protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    if (isLoaded) 
     canvas.drawBitmap(finalBitmap, 0, 0, null); 

} 

...しかし、それらの非ビットマップに影響を与えた

答えて

0

あなたのコードは次のようになります

canvas.save(); 
canvas.scale(mScaleFactor, mScaleFactor); 
canvas.drawBitmap(bitmap, 0, 0, null); 
canvas.restore(); 

別のオプションは、次の呼び出しcanvas.drawBitmap (Bitmap bitmap, Rect src, Rect dst, Paint paint)

+0

とあなたのためのスケーリングを行いdrawBitmapを使用することですがありがとう完璧にそれを働いたondrawキャンバスにスケールのみ、私は今、別の問題を抱えているmycanvas – MREZA

+0

上の問題がありました。私は画面の中央に画像を置くことができません------------ canvas.save(); canvas.scale(x、x); float y = finalBitmap.getHeight()* 480f/finalBitmap.getWidth(); canvas.drawBitmap(finalBitmap、0、((yscaleFactor * 800f/2) - y/2)、null); canvas.restore(); – MREZA

+0

センターを計算するときにスケールファクタを使用しないでください。キャンバスは各コールを拡大/縮小するときにスケールファクタを使用します。 – lionscribe

関連する問題