java pixel data_java - JavaFX PixelWriter性能低下
我创建了一个简单的JavaFX图像编辑器。有两个ImageView实例(对于原始图像,打开一个,对于已编辑图像,打开一个)。
一种方法将WritableImage转换为灰度。
问题是,转换所需的时间大约是Swing执行相同任务所需时间的两倍。知道为什么吗?@FXML
void loadImage(ActionEvent event) {
FileChooser fileChooser = new FileChooser();
File file = fileChooser.showOpenDialog(Main.primaryStage);
if (file != null) {
Image image = new Image("file:" + file.getAbsolutePath());
imViewOrig.setImage(image);
PixelReader pr = imViewOrig.getImage().getPixelReader();
WritableImage wi = new WritableImage(
pr,
(int)imViewOrig.getImage().getWidth(),
(int)imViewOrig.getImage().getHeight());
imViewEdit.setImage(wi);
}
}
@FXML
void greyscale(ActionEvent event) {
PixelReader pr = imViewOrig.getImage().getPixelReader();
PixelWriter pw = ((WritableImage)imViewEdit.getImage()).getPixelWriter();
long beginTime = System.currentTimeMillis();
for (int x = 0; x < imViewEdit.getImage().getWidth(); x++) {
for (int y = 0; y < imViewEdit.getImage().getHeight(); y++) {
Color c = pr.getColor(x, y);
double avg = (c.getRed() + c.getGreen() + c.getBlue()) / 3.;
Color grey = new Color(avg, avg, avg, c.getOpacity());
pw.setColor(x, y, grey);
}
}
System.out.println(System.currentTimeMillis() - beginTime + "ms");
}
秋千代码:
public void greyscale() {
long beginTime = System.currentTimeMillis();
for (int x = 0; x < image.getWidth(); x++) {
for (int y = 0; y < image.getHeight(); y++) {
Color c = new Color(image.getRGB(x, y));
int avg = (c.getRed() + c.getGreen() + c.getBlue()) / 3;
Color grey = new Color(avg, avg, avg);
image.setRGB(x, y, grey.getRGB());
}
}
repaint();
System.out.println(System.currentTimeMillis() - beginTime + "ms");
}
最佳答案
在快速测试中,如果仅执行int计算而不是操纵Color对象,则它的工作速度将提高10倍左右。与AWT Color类相比,JavaFX Color类的实现要丰富得多。我想这要付出额外的开销。int width = (int)image.getWidth();
int height = (int)image.getHeight();
int[] pixels = new int[width * height];
WritablePixelFormat pixelFormat = PixelFormat.getIntArgbPreInstance();
pr.getPixels(0, 0, width, height, pixelFormat, pixels, 0, width);
int[] newPixels = new int[pixels.length];
for (int i = 0 ; i < pixels.length; i++) {
int c = pixels[i];
int a = c & 0xFF000000 ;
int r = (c >> 16) & 0xFF ;
int g = (c >> 8) & 0xFF ;
int b = c & 0xFF ;
int gray = (r+g+b) / 3 ;
newPixels[i] = a | (gray << 16) | (gray << 8) | gray ;
}
pw.setPixels(0, 0, width, height, pixelFormat, newPixels, 0, width);
java pixel data_java - JavaFX PixelWriter性能低下相关推荐
- java dump分析工具_java性能分析与常用工具
本次源码已放在Github:https://github.com/nateshao/jvm-tuning 个人博客 https://nateshao.gitee.io http://www.nates ...
- java程序能转变为javafx_如何将intellij中的普通Java项目转换为JavaFx项目
小编典典 没有什么可以转换的. 我认为"正常" Java项目和JavaFX项目之间在Idea中没有任何区别. 当然,在Idea 12.x +中,可以使用向导创建新的JavaFX项目 ...
- MySQL查询中LIMIT的大offset导致性能低下浅析
这篇文章主要给大家介绍了关于MySQL查询中LIMIT的大offset导致性能低下的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起 ...
- java split()方法_Java编程性能优化一些事儿
点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Smile and stop complaining about the t ...
- Java 编程:如何提高性能?(简单总结篇)
2019独角兽企业重金招聘Python工程师标准>>> 开发者在编程中除了要有编程规范,还要注意性能,在 Java 编程中有什么提高性能的好办法呢? 本文转自国内 ITOM 行业领军 ...
- 在Java里面使用instanceof的性能影响
问题:在Java里面使用instanceof的性能影响 我正在写一个应用程序,其中一种设计方案包含了instanceof操作的大量使用.虽然我知道面向对象设计通常试图避免使用instanceof,但那 ...
- benchmark问题_使用U盘来掩盖CEPH IO性能低下的问题
背景 最近Gemfield利用团队废弃的硬件搭建了一个CEPH集群,这些硬件的关键信息如下: 主流的Intel x86 cpu: 64GB RAM per node: 1GbE+ NIC: 1GbE+ ...
- 品味性能之道十一:JAVA中switch和if性能比较
通常而言大家普遍的认知里switch case的效率高于if else.根据我的理解而言switch的查找类似于二叉树,if则是线性查找.按照此逻辑推理对于对比条件数目大于3时switch更优,并且对 ...
- JAVA的字符串拼接与性能
概述:本文主要研究的是JAVA的字符串拼接的性能,原文中的测试代码在功能上并不等价,导致concat的测试意义不大.不过原作者在评论栏给了新的concat结果,如果有兴趣的同学建议自己修改代码测试. ...
最新文章
- bzoj 1877: [SDOI2009]晨跑 (网络流)
- 推荐一款Python开源库,技术人必备的造数据神器!
- spring security3 统计在线用户
- jeecg 3.5.2 新版本4种首页风格 【经典风格,shortcut风格,ACE bootstrap风格,云桌面风格】
- Web调试工具:火狐Firefox插件Firebug介绍
- Hive函数:GROUPING SETS,GROUPING__ID,CUBE,ROLLUP
- java锁的概念,Java ReentrantLock锁机制概念篇
- 李菲菲贡献_贡献,贡献,贡献!
- php 打包下载网络图片,php多张图片打包下载
- 超级简洁的xml解析框架:TBXML
- Html5+Css3小试牛刀
- JAVA CLASS混淆工具:Allatori 简单试用
- 壁纸小程序云开发+无限裂变+附安装视频教程
- 黑马程序员与兄弟连兄弟会的对比
- 遇到svn is already locked 解决办法
- 如何玩转阿里巴巴国际站Trueview视频?
- aardio 模拟键盘按键,实现msgbox对话框自动关闭
- onvif 客服端鉴权
- Matlab之误差分析
- MATLAB动画绘制
热门文章
- 编程数学(A-2)-次方
- 库存管理与订单的控制
- POJ 1050 To the Max (最大子矩阵和)
- [转载] 民兵葛二蛋——第31集
- 用MFC消息映射机制自定义消息
- SQL Server 2005 正则表达式使模式匹配和数据提取变得更容易
- [转载] python随笔2(列表的增删改查)
- [转载] python查看的统计量_python 描述性统计_Python中的基本统计:描述性统计
- FPGA开发设计必经之路:时序分析
- 第一天学习笔记之数组(冒泡排序+二分查找)