1

最長辺に基づいて画像のサイズを変更する必要があります。たとえば、最長辺 (幅または高さ) は 100 ピクセルの長さにする必要があります。

現在、私はこの方法を使用しています:

private Image resizeImageByLongestSide(File imageFile, int lengthLongestSide)
{
    String uri ="file:" + imageFile.getAbsolutePath();
    Image image = new Image(uri); // raed to determine width/height

    // read image again for resizing
    if(image.getWidth() >= image.getHeight())
        return new Image(uri, lengthLongestSide, 0, true, false);
    else
        return new Image(uri, 0, lengthLongestSide, true, false);
}

そのため、サイズ変更は Image コンストラクターを使用することによってのみ可能であるように見えるため、最初にイメージをディスクから読み取って、どちらの面が最も長いかを判断する必要があります...これ?ありがとう :-)

4

2 に答える 2

1

不変式は最終的な解決策に近かったため、最終的な解決策のクレジットはオラクル フォーラムの l2p に移動します。

ImageView は、シーン内にあるかどうかに関係なく、実際の画像を変更しません。指定された画像から可視ノードのみをレンダリングします。現在の可視状態から新しい画像をレンダリングする場合は、snapshot() を作成する必要があります。そう:

Image resizedImage = myImageView.snapshot(null, null); // after using myImageView.setFitHeight()/setFitWidth/( etc.

バグ修正:

デフォルトのコントロール (herE: imageview) の背景が白であるため、現在のアプローチでは透明性が失われます。白の透明度(画像から)のスクリーンショットは白になるため、元の透明度が失われます。これを修正: 背景自体を透明に設定します。

したがって、固定コード:

SnapshotParameters params = new SnapshotParameters();
params.setFill(Color.TRANSPARENT); 
return imageView.snapshot(params, null); 

地獄、トリッキーなこのもの;-)

于 2013-02-18T14:13:46.060 に答える
1

必要なのはImageViewだけです

イメージを一度メモリにロードし、必要に応じてイメージビューを操作します。

サンプルコード:

//load image to memory
final static Image MY_IMAGE = new Image(path of image file);
//create different imageviews pointing to image in memory and do manipulations
ImageView myImage = new ImageView(MY_IMAGE);
myImage.setFitHeight(value);
myImage.setFitWidth(value);
于 2013-02-17T03:01:38.247 に答える