首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将WriteableImage转换为BufferedImage

将WriteableImage转换为BufferedImage
EN

Stack Overflow用户
提问于 2020-06-02 22:02:17
回答 2查看 71关注 0票数 0

我需要一些关于Java (11,Javafx)中的Writable和BufferedImages的帮助:

如何将WritabeImage转换为BufferedImage?-不使用SwingFXUtils.fromFXImage()

找到一个没有SwingFXUtils.fromFXImage()的解决方案对我来说很重要。我已经问过谷歌了,但我得到的唯一结果是SwingFXUtils.fromFXImage()。所以我想请教你的专业知识。

你能帮帮我吗?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2020-06-02 23:27:27

谢谢你的帮忙!

这就是我的代码的样子(包括我需要避免的'SwingFXUtils‘):

代码语言:javascript
复制
static public void createImg(Node NODE, String name) {
        WritableImage SNAPSHOT = NODE.snapshot(new SnapshotParameters(), null);
        File file = new File(Properties.getSettingsPath() + File.separator + name + ".png");
        try {
            ImageIO.write(SwingFXUtils.fromFXImage(SNAPSHOT, null), "png", file);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
票数 0
EN

Stack Overflow用户

发布于 2020-06-02 23:50:45

您可以自己复制像素:

代码语言:javascript
复制
BufferedImage convert(Image fxImage) {
    int width = (int) Math.ceil(fxImage.getWidth());
    int height = (int) Math.ceil(fxImage.getHeight());

    BufferedImage image = new BufferedImage(width, height,
        BufferedImage.TYPE_INT_ARGB);

    int[] buffer = new int[width];

    PixelReader reader = fxImage.getPixelReader();
    WritablePixelFormat<IntBuffer> format =
        PixelFormat.getIntArgbInstance();
    for (int y = 0; y < height; y++) {
        reader.getPixels(0, y, width, 1, format, buffer, 0, width);
        image.getRaster().setDataElements(0, y, width, 1, buffer);
    }

    return image;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62153843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档