【问题标题】:JavaFX create a new image from an existing oneJavaFX 从现有图像创建新图像
【发布时间】:2017-09-13 04:26:13
【问题描述】:

在 JavaFX 中,您可以从字符串(路径)创建新图像,我将如何从现有的 javafx.scene.image.image 创建新图像?

如下:

Image image2 = new Image("my/res/flower.png", 100, 150, false, false);

但不是路径,而是实际的图像对象。

我想改变图片的大小。

【问题讨论】:

  • 您需要新的Image 吗?假设您将在ImageView 中显示此内容:为什么不从同一张图像中创建多个ImageViews?
  • 我想在画布上绘制该缩放图像。
  • 所以只需使用drawImage(...) 方法,该方法允许您绘制缩放版本。同样,无需创建新图像。
  • 我认为除了逐像素复制之外没有直接的方法,如果您最终想更改大小,可以将图像设置为新的图像视图并更改大小
  • 我删除了我的最后一条评论,这是我的错误,通过 drawimage 缩放图像确实应用了抗锯齿,这是我不想要的。

标签: java image javafx scale


【解决方案1】:

通常不需要创建新的Image 实例来执行重新缩放。 API 允许您查看或绘制现有Image 实例的缩放版本。例如,给定

Image image = new Image("my/res/flower.png");

您可以创建一个ImageView 来显示缩放版本

ImageView imageView = new ImageView(image);
imageView.setFitWidth(100);
imageView.setFitHeight(150);

或者你可以在画布上绘制一个缩放版本

Canvas canvas = ... ;
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), 0, 0, 100, 150);

【讨论】:

    【解决方案2】:

    响应迟了,但由于我遇到了同样的问题(我需要一个图像来传递给 setDragView() ),这是我实施的解决方案:

    Image makeThumbnail(Image original) {
        ImageView i = new ImageView(original);
        i.setFitHeight(64); i.setFitWidth(64);
    
        return i.snapshot(new SnapshotParameters(), new WritableImage(64, 64));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      相关资源
      最近更新 更多