-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);
}
...しかし、それらの非ビットマップに影響を与えた
とあなたのためのスケーリングを行いdrawBitmapを使用することですがありがとう完璧にそれを働いたondrawキャンバスにスケールのみ、私は今、別の問題を抱えているmycanvas – MREZA
上の問題がありました。私は画面の中央に画像を置くことができません------------ 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
センターを計算するときにスケールファクタを使用しないでください。キャンバスは各コールを拡大/縮小するときにスケールファクタを使用します。 – lionscribe