我想在我的JavaFX应用程序中添加一个简单的光栅图形编辑器
似乎无法使用javafx.scene.image.Image
来完成,因为图形对象是只读的
有人可以指出我该怎么做或者有些类可以直接访问像素图?
upd:编辑器没有必要快速响应,因此建议a-la 创建隐藏java.awt.Canvas
,处理ImageView上的所有事件以在画布上绘制,通过某种方式创建来自画布的输出流,以创建新的javafx Image并将其放到ImageView 。
答案 0 :(得分:9)
您可以使用JavaFX canvas执行此操作,如Canvas Tutorial“与用户交互”部分所示。您不需要java.awt.Canvas
。
您可以使用snapshot画布(或任何其他节点)来创建图像。
您可以使用PixelReader从现有图像中读取像素地图,并使用从PixelWriter获得的WritableImage写入图像的像素地图,如ImageOps tutorials所示}。
将结果图像写入磁盘convert it to a BufferedImage并使用ImageIO将其写出。
如果需要,可以将缩放图像的样本设置为像素化形式(类似于Microsoft Paint中的缩放功能):JavaFX ImageView without any smoothing。