小编Teg*_*yat的帖子

将Canvas转换为WritableImage的替代方案

我正在开发一个需要在JavaFX中进行大量比较图像数据的应用程序.为了进行比较,我需要获取图像中像素的rgb数据.假设我需要比较的图片是Picture1Picture2.Picture1是用户选择的输入图像.Picture2是我以编程方式制作的图纸.

据我所知,得到JavaFX中每个像素的RGB数据的唯一方法是使用PixelReaderImage.这对Picture1来说很好,因为它是一个输入.但是,我需要做的图纸上的图片2图片2是一个Canvas(我借鉴图片2多边形并且因为与PixelWriter像素画像素有点复杂IMO),并没有PixelReader什么具有类似功能.所以我的解决方案如下:

  1. 读取输入图像并制作Picture1
  2. 制作画布并进行绘图
  3. 将画布附加到场景
  4. 制作场景快照并制作WritableImage(Picture2)
  5. 比较Picture1和Picture2

所以我有一个类似的方法:

public static WritableImage makeDrawableImage(Canvas in) {
     AnchorPane root = new AnchorPane(in);
     WritableImage out = new WritableImage((int)in.getWidth(), (int)in.getHeight());
     Scene sc = new Scene(root, in.getWidth(), in.getHeight());

     out = in.snapshot(null, null);

     return out;
}
Run Code Online (Sandbox Code Playgroud)

但是快照完成需要很长时间.out永远不会分配值.我不知道我做错了什么.

有没有替代转换CanvasImageWritableImage?或者也许有一个库可以更容易地绘制多边形PixelWriter

请对我说软.这是我关于Stack Overflow的第一个问题,我不是真正的程序员,也不是IT学生.我编码作为一种爱好.

所以,提前谢谢.干杯.

java javafx canvas image snapshot

7
推荐指数
1
解决办法
1398
查看次数

标签 统计

canvas ×1

image ×1

java ×1

javafx ×1

snapshot ×1