javafxのキャンバスに拡大縮小画像を描画しようとしています。このコードを使用する:javafxのキャンバスにdrawImageの線形フィルタリングを無効にする方法
Image image = ...;
canvas.setWidth(scale * width);
canvas.setHeight(scale * height);
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.drawImage(image, 0, 0, scale * width, scale * height);
// this gives same result
// gc.scale(scale, scale);
// gc.drawImage(editableImage, 0, 0, width, height);
をそれは本当に速く動作しますが、このようにぼやけた画像を作る:
これは私が見てみたいものではありません。代わりに、私はこの絵を取得したい:手動でこのようなコードで、各ピクセルの色を設定することで描画できる
:それはあまりにも遅いですよう
PixelReader reader = image.getPixelReader();
PixelWriter writer = gc.getPixelWriter();
for (int y = 0; y < scale * height; ++y) {
for (int x = 0; x < scale * width; ++x) {
writer.setArgb(x, y, reader.getArgb(x/scale, y/scale));
}
}
しかし、私はこのアプローチを使用することはできません。 1Kbの画像を8倍に拡大するには数秒かかりました。だから私はキャンバスで描くためにこのぼやけた効果を無効にする方法があるかどうか尋ねる?
関連する場合もありますが、おそらく重複:https://stackoverflow.com/questions/16089304/javafx-imageview-without-any-smoothing – fabian
@fabianこの疑問は、ImageViewについてです。キャンバスはかなり異なっています。 – Nolan