是否有任何方法可以序列化javafx.scene.image.image?
我只找到了一个方法:创建自己的可序列化类,它以像素格式存储图像数据(字节[])。我不敢相信JavaFX没有内置的图像序列化机制。
这是我的SerializableImage类。
import javafx.scene.image.Image;
import javafx.scene.image.PixelReader;
import javafx.scene.image.PixelWriter;
import javafx.scene.image.WritableImage;
import java.io.Serializable;
public class SerializableImage implements Serializable {
private int width, height;
private int[][] data;
public SerializableImage() {}
public void setImage(Image image) {
width = ((int) image.getWidth());
height = ((int) image.getHeight());
data = new int[width][height];
PixelReader r = image.getPixelReader();
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
data[i][j] = r.getArgb(i, j);
}
}
}
public Image getImage() {
WritableImage img = new WritableImage(width, height);
PixelWriter w = img.getPixelWriter();
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
w.setArgb(i, j, data[i][j]);
}
}
return img;
}
}
通常,您可以通过以常规图像格式存储图像来持久保存(或流式传输)图像,您可以通过创建java.awt.image.BufferedImage
表示并使用javax.imageio.ImageIO
API来执行此操作:
Image image = ... ;
ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", ...);
< code>ImageIO.write的第三个参数(...)可以是< code >文件或< code >输出流。
如果您想要使某个类可序列化,该类包含<code>图像
public class SomeClass implements Serializable {
private transient Image image ;
// other fields, etc...
private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
s.defaultReadObject();
image = SwingFXUtils.toFXImage(ImageIO.read(s), null);
}
private void writeObject(ObjectOutputStream s) throws IOException {
s.defaultWriteObject();
ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", s);
}
}
我的应用程序中有一个ListView,我想对条目进行排序。我还希望列表自动排序,如果一个新的条目被添加。 为此,我使用sortedlist。Java API表示“ObservableList中的所有更改都会立即传播到SortedList中”。
我不熟悉Java和OOP,一直在将图像添加到tableview列。代码似乎工作,我可以看到学生的名字正确,但图像没有显示在列中。我遇到了这个错误,无法理解如何使其工作: 学生模型: 和参与者场景,我有桌面视图: 如果可能有帮助,还可以添加讲座模型: 感谢您的帮助,谢谢!
问题内容: 我有一个从主监视器截取的图像,因此我想将其添加到Java FX : 我正在尝试将设置为,但是类型不兼容,也无法强制转换。我该如何纠正? 问题答案: 您可以使用
无论我做什么来改变它,我都会不断得到这个错误。我对JavaFX非常陌生,我想尝试一个小程序。我只是想让一张照片出现在现场,但我甚至不能让图像加载到我的程序中。我将图像放在主包(seaapp)旁边的包(seaapp.images)中 这给了我一个错误: 当我添加一个图片的URL作为新图片时,这很好,但是当我有一个下载的图片时,它会给我这个错误。我的netbeans也完全更新了。我已经把我如何设置文件
好的,我对Java非常、非常陌生,而且是自学成才的,所以不要拿我糟糕的编码开玩笑;)我在玩弄JavaFX,试图将图像插入到边框窗格布局中。 这是控制器中的方法,我正在使用它来显示图像,但我无法让文件路径工作。它目前有“/图像/BrownBear.jpg”作为文件路径,但我尝试了相对路径- com/jaimependelbury/哺乳类动物/images/brownBear.jpg 完整的路径和中间
快速提问,如何在fxml中让图像覆盖整个按钮。 因此,按钮的所有可见部分都是边框。由于某种原因,当我试图调整图像大小以适应按钮时,它会自动调整大小。我在使用场景生成器。我正在使用FXML。 按钮大小为prefHeight=“38.0”prefWidth=“50.9990000002526”。 记住我不想看到按钮的背景。我希望它被一张图片覆盖。 谢谢,你们帮了大忙。