我正在开发一个需要在JavaFX中进行大量比较图像数据的应用程序.为了进行比较,我需要获取图像中像素的rgb数据.假设我需要比较的图片是Picture1和Picture2.Picture1是用户选择的输入图像.Picture2是我以编程方式制作的图纸.
据我所知,得到JavaFX中每个像素的RGB数据的唯一方法是使用PixelReader
的Image
.这对Picture1来说很好,因为它是一个输入.但是,我需要做的图纸上的图片2和图片2是一个Canvas
(我借鉴图片2多边形并且因为与PixelWriter像素画像素有点复杂IMO),并没有PixelReader
什么具有类似功能.所以我的解决方案如下:
所以我有一个类似的方法:
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
永远不会分配值.我不知道我做错了什么.
有没有替代转换Canvas
为Image
或WritableImage
?或者也许有一个库可以更容易地绘制多边形PixelWriter
?
请对我说软.这是我关于Stack Overflow的第一个问题,我不是真正的程序员,也不是IT学生.我编码作为一种爱好.
所以,提前谢谢.干杯.