- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
用户可以浏览到图像文件。我想将选定的文件保存到 BLOB 列中的数据库(derby db)。为此,我需要将 Image 对象转换为字节数组 (byte[]),并检索它,我需要:byte[] -> Image。
所以我搜索并找到了这个:from this question
纯java fx解决方案trace(==你必须填写缺失的点:)
Image i = logo.getImage();
PixelReader pr = i.getPixelReader();
PixelFormat f = pr.getPixelFormat();
WriteablePixelFromat wf = f.getIntArgbInstance(); //???
int[] buffer = new int[size as desumed from the format f, should be i.width*i.height*4];
pr.getPixels(int 0, int 0, int i.width, i.height, wf, buffer, 0, 0);
我是这样实现的:
private ImageByteInfo imageToByteArray(Image i){
PixelReader pr = i.getPixelReader();
WritablePixelFormat<ByteBuffer> wf = PixelFormat.getByteBgraInstance();
byte[] buffer = new byte[(int) (i.getWidth() * i.getHeight() *4)];
pr.getPixels(0, 0, (int) i.getWidth(), (int) i.getHeight(), wf, buffer, 0, 0);
return new ImageByteInfo(buffer, (int) i.getWidth(), (int) i.getHeight()) ;
}
除了当我调查缓冲区数组时。我发现只有前 4096 个条目是有效的(有数字),数组的其余部分都是 0 0 0 0 0 0。
那么我该如何解决这个问题呢?谢谢。
这是从不固定数组中检索图像的方法。这是否正确?
private Image byteArrayToImage(ImageByteInfo imageArray){
WritablePixelFormat<ByteBuffer> wf = PixelFormat.getByteBgraInstance();
WritableImage writableimage = new WritableImage(imageArray.getWidth(), imageArray.getHeight());
PixelWriter pixelWriter = writableimage.getPixelWriter();
pixelWriter.setPixels(0, 0, imageArray.getWidth(), imageArray.getHeight(), wf, imageArray.getByteImage(), 0, 0);
return writableimage;
}
注意:对文件系统存储不感兴趣,并且它需要是纯 JavaFX(无 Swing 或 AWT)
最佳答案
在
pr.getPixels(0, 0, (int) i.getWidth(), (int) i.getHeight(), wf, buffer, 0, 0);
最后一个参数(scanlineStride
)是当您从图像中的一行前进到下一行时数组的偏移量。由于您将其设置为零,因此您不会增加数组索引,并且实际上只写入数组的一“行”。
由于此格式每个像素使用 4 个字节,因此您需要 4*imageArray.getWidth()
的扫描线步幅:
pr.getPixels(0, 0, (int) i.getWidth(), (int) i.getHeight(), wf, buffer, 0, 4*imageArray.getWidth());
同样,
pixelWriter.setPixels(0, 0, imageArray.getWidth(), imageArray.getHeight(), wf, imageArray.getByteImage(), 0, 4*imageArray.getWidth());
关于java - 纯JavaFX : convert Image to bytes Array (+ opposit operation). 出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37008675/
取以下字符向量x x sub("[A-Z][a-z]+", "", x) [1] "1 in the form" "2 of game" [3]
我正在寻找与 Porter Stemmer algorithm 相反的方法,即字符串“search”将返回一个数组“searches, searched, searching etc..” 是否已经存
我是 Haskell 新手。我正在尝试在 Haskell 中创建一种迷你语言,并且希望如果可能的话有一个名为 opp (“opposite”的缩写)的高阶函数,它将许多熟悉的函数转换为它们明显的函数对
我有以下代码: neighbor(C1, C2, [C1, C2|L]). neighbor(C1, C2, [C2, C1|L]). neighbor(C1, C2, [H|L]) :- neigh
我有一个方法 strip(),这里是它的使用上下文: public String strip(String data, String tag) { ... } @param data a str
我是 Bootstrap 的新手。我有一个可用的脚本,但我在修改它时遇到了问题。 脚本做了两件事: 1) 当您点击标题时,下面的 div 打开或关闭。 2) 当您单击标题时,标题旁边会显示两个字形之一
使用 Linq;如何做 Take 的“反面”? 即而不是获取前 n 个元素,例如 in aCollection.Take(n) 我想获取除最后 n 个元素以外的所有元素。有点像 aCollection
null 合并大致转换为返回 x,除非它为 null,在这种情况下返回 y 我经常需要如果x为null则返回null,否则返回x.y 我可以使用 return x == null 吗?空 : x.y;
我使用以下脚本与文件夹进行比较: if diff "/home/folder1/" "/home/folder2/" &> /dev/null ; then echo "Files in th
我有一堆 PropertyPages 与 PropertyPage 粘在一起(以创建选项卡式 View )。其中一个页面在其 OnSetActive() 方法中启动一个计时器来刷新一些状态信息。现在,
要将一行文本分隔成两行,我正在使用: Line one line two p span { display:block } 但是在我的页面的移动版本上,我想删除元素上的那个 block
在看到可用的不同选择器后(从 CSS3 开始),+ 之间的区别和 ~似乎几乎相同。而且似乎也没有与 ~ 功能相反的选择器. 取自www.w3schools.com : div + p: Selects
我是这样写的: var destinations = db.DestinationDetails. Where(dd => dd.Language.Lang == "en-US" &&
在 ruby 中,您可以使用 & 运算符将两个数组相交。 我正在尝试获取交叉路口的其余部分。 如果我使用一个简单的案例 - 就足够了: array_1 = [0, 1] array_2 = [0]
在 Android 中,应用程序可以请求 android.permission.INTERNET 权限。这由 Android 的 UI 翻译为“完整 Internet 访问”。 是否有类似“受限互联网
我一直在尝试禁用按钮,直到操作完成,然后这应该启用按钮 按钮代码: 这是 bean FileUploadController,它是一个托管和 View 范围的 bean private bo
Git-diff 有一个选项 -G,它使用正则表达式来匹配差异。 如何反其道而行之? IE。查找添加或删除的行与给定正则表达式不匹配的差异? 最佳答案 我不认为您可以使用正则表达式来实现这一点。解决方
这是我将数据 append 到结构的方式: user.Things = append(user.Things, item.Id) 现在,如何从 user.Things 中删除 item.id?似乎没有
我该怎么做 git diff在 Atlassian SourceTree 桌面应用程序中的相反方向?换句话说,我如何让 SourceTree 做 git diff b a而不是 git diff a
我知道unix的find命令有这个选项: find -version GNU find version 4.1 -newer file Compares the modification da
我是一名优秀的程序员,十分优秀!