文章结束给大家来个序程员笑话:[M]

声明:   本博客文章原创类别的均为个人原创,版权所有。载转请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com。

在JavaFX中,大概是2.2当前的版本中,新增长了像素处置的相干类。这就意味着我们可以做一些图片处置的事。

还是老样子,大家可以先看看示例。持支动拖地本图片到序程中行进处置。

示例址地: 点击

如下图所示:

这只是一个浅易的图片处置示例,我们可以对图片行进明暗度 饱和度 灰度 颜色反转等处置。 然后保存在地本。样同的,我们可以动拖图片到ImageView中行进处置。

JavaFX中的动拖教程已有写过。大家可以去看看。

首先我们要知道在JavaFX中行进图像像素处置须要用使的几个类。

PixelReader和PixelWriter,义思名顾。这两个是像素读取和像素入写的类。须要注意的是,我们只能从JavaFX的Image中读取像素,而像素入写,必须要对WritableImage行进作操。

WritableImage是一个可入写像素的Image。平日我们可以从Image中读取像素,然后建创一个样同巨细的WritableImage,然后将读取的像素行进处置,再入写到WritableImage中。

总的来说,还是很简略的。

另外,JavaFX中的Color,自己就附带了简略的颜色处置的法方。我们可以直接用使,来行进一般的颜色处置。例如: Color.brighter(), 可以让颜色更加亮明。 Color.invert(),可以让颜色行进反转。

面上大家来看看示例代码:

每日一道理
盈盈月光,我掬一杯最清的;落落余辉,我拥一缕最暖的;灼灼红叶,我拾一片最热的;萋萋芳草,我摘一束最灿的;漫漫人生,我要采撷世间最重的———毅力。
public class MainClass extends Application {private ImageView imageView;private Image image;private WritableImage wImage;private FileChooser fileChooser;@Overridepublic void start(final Stage primaryStage) {StackPane stackPane = new StackPane();Scene scene = new Scene(stackPane);VBox mVBox = new VBox(20);HBox mButtonsBox = new HBox(10);mButtonsBox.setAlignment(Pos.CENTER);Button bright = new Button("亮明");Button darker = new Button("深暗");Button gray = new Button("灰度处置");Button invert = new Button("颜色反转");Button saturate  = new Button("增长饱和度");Button desaturate = new Button("少减饱和度");Button recover = new Button("原还图片");Button export = new Button("出导");fileChooser = new FileChooser();fileChooser.getExtensionFilters().add(new ExtensionFilter("图片件文", "*.png","*.jpg", "*.bmp", "*.gif"));bright.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {pixWithImage(0);}});darker.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {pixWithImage(1);}});gray.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {pixWithImage(2);}});invert.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {pixWithImage(3);}});saturate.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {pixWithImage(4);}});desaturate.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {pixWithImage(5);}});recover.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {imageView.setImage(image);}});export.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {File file = fileChooser.showSaveDialog(primaryStage.getOwner());if (file != null) {try {ImageIO.write(SwingFXUtils.fromFXImage(wImage, null), "png", file);} catch (IOException e) {e.printStackTrace();}}}});mButtonsBox.getChildren().addAll(bright,darker,gray,invert,saturate,desaturate,recover,export);image = new Image("res/test.jpg");imageView = new ImageView(image);imageView.setSmooth(true);imageView.setOnDragOver(new EventHandler<DragEvent>() {@Overridepublic void handle(DragEvent event) {if(event.getGestureSource() != imageView){event.acceptTransferModes(TransferMode.ANY);}}});imageView.setOnDragDropped(new EventHandler<DragEvent>() {@Overridepublic void handle(DragEvent event) {Dragboard dragboard = event.getDragboard();List<File> files = dragboard.getFiles();if(files.size() == 1){File file = files.get(0);try {image = new Image(new FileInputStream(file));imageView.setImage(image);} catch (FileNotFoundException e) {e.printStackTrace();}}}});mVBox.getChildren().addAll(mButtonsBox, imageView);stackPane.getChildren().add(mVBox);primaryStage.setTitle("JavaFX示例--浅易图片处置具工");primaryStage.setScene(scene);primaryStage.setWidth(600);primaryStage.setHeight(500);primaryStage.show();}private void pixWithImage(int type){PixelReader pixelReader = imageView.getImage().getPixelReader();// Create WritableImagewImage = new WritableImage((int)image.getWidth(),(int)image.getHeight());PixelWriter pixelWriter = wImage.getPixelWriter();for(int y = 0; y < image.getHeight(); y++){for(int x = 0; x < image.getWidth(); x++){Color color = pixelReader.getColor(x, y);switch (type) {case 0:color = color.brighter();break;case 1:color = color.darker();break;case 2:color = color.grayscale();break;case 3:color = color.invert();break;case 4:color = color.saturate();break;case 5:color = color.desaturate();break;default:break;}pixelWriter.setColor(x, y, color);}}imageView.setImage(wImage);}public static void main(String[] args) {launch(args);}
}

由于比拟简略,我们在这里只用一个主类来行进。

界面上只是一个VBox,面上是一排按钮的HBox,面上是一个ImageView。

pixWithImage(int type)是一个按照类型来行进颜色处置的法方。大家可以看到,我们首先通过Image来取获pixelReader。然后,建创一个等同巨细的WriteableImage,并取获这个WriteableImage的pixelWriter。

我们通过一个双层for循环遍历原始Image的像素,然后对每一个像素行进处置当前,通过PixelWriter入写到WriteableImage中,最后将新的Image示显到ImageView里。

其他的代码都是很础基的,就不做过多解释了。

不过这里有一个很主要的类SwingFXUtils,它可以将Swing中的Image和JavaFX中的Image行进转换,这样对前以的Java形图序程的移植供提了很大的便方。

面上大家看看效果截图:

载转请注明出处: http://blog.csdn.net/ml3947

-------------------------------------------------------------------------------------------------------------------------

JavaFX在国外前目探讨的还比拟炽热,相反在海内,倒是注关的人未几。在实使人汗颜。其实本人任务一直在行进Android发开,即使随意写写文章访问量也应该会很大,但我不并想做那种太多人都在做的事。所以一直在持坚的JavaFX相干的研讨和写教程。

不过本人马上要从当初的Android项目,跳到Unity3D项目去了。当前可能会新增长一些Unity3D的教程。因为本人对3D的兴致还是很大的。

-------------------------------------------------------------------------------------------

文章结束给大家分享下程序员的一些笑话语录: 《诺基亚投资手机浏览器UCWEB,资金不详或控股》杯具了,好不容易养大的闺女嫁外国。(心疼是你养的吗?中国创业型公司创业初期哪个从国有银行贷到过钱?)

像素颜色JavaFX示例--简易图片处理工具相关推荐

  1. 最简单的基于FFmpeg的libswscale的示例附件:测试图片生成工具

    ===================================================== 最简单的基于FFmpeg的libswscale的示例系列文章列表: 最简单的基于FFmpeg ...

  2. 示例填充图片_填充内容:工具,技巧和动态示例

    示例填充图片 随着浏览器中的设计变得越来越流行(和方便),对有用的设计工具的需求也在增加. 一组非常有用的工具围绕着填料含量. 当前,存在各种资源来帮助需要填充内容的设计人员,无论是文本还是图像. 由 ...

  3. js获取图片像素颜色,修改图片像素颜色

    直接上代码示例 <!DOCTYPE HTML PUBLIC> <html><head><meta charset="utf-8">& ...

  4. 获取图片像素颜色,转换为CSS3 box-shadow显示

    原理: 1.使用FileReader 读取图片 2.使用canvas 的 getImageData 获取图片像素信息 3.将像素信息转换为CSS3 box-shadow 代码: <!DOCTYP ...

  5. 基于 JavaFx 搭建的实用小工具集合 xJavaFxTool

    项目简介: gitee地址:xJavaFxTool GitHub地址:xJavaFxTool xJavaFxTool交流QQ群:== 387473650 == xJavaFxTool是使用javaFx ...

  6. Shader学习12——简易图片叠加

    看到蛮牛有人想要两个带透明通道的图片叠加,就是最简单的纹理混合,想想其实实现起来应该很简单,但是搜了一下还真没搜到,这里简单实现一下,要求底图需要是不透明的: image.png image.png ...

  7. java 图片合成 工具类_Java实现的微信图片处理工具类【裁剪,合并,等比例缩放等】...

    本文实例讲述了Java实现的微信图片处理工具类.分享给大家供大家参考,具体如下: 现在 外面核心,图片文章比较少,看了拷贝代码,而用不了,用相应jar包处理,很多等比例缩放,达不到 想要的给予的期望: ...

  8. 示例填充图片_用示例解释洪水填充算法

    示例填充图片 什么是洪水填充? (What is Flood Fill?) Flood fill is an algorithm mainly used to determine a bounded ...

  9. 4个好用的图片去水印工具,图片去水印这样做就对了

    分享4个图片去水印工具,操作简单,一看就会,并且去水印效果好,几乎看不出水印的痕迹! 1.Img.cleaner 一个免费的图片去水印在线工具,采用的是最新的最新的AI清理和图像修复技术,选中图片水印 ...

最新文章

  1. 高层定调!铁腕控炒房,2019下半年楼市基本不会涨了
  2. python类型-Python基本内置数据类型有哪些?
  3. Nginx-01:内容目录
  4. 蓝牙4.0技术分析1-广播者角色
  5. 钱穆的中学读书事(作者王国华)
  6. spring 之 init-method InitializingBean
  7. oc 协议 回调 静态成员_每日一问:c++类的成员函数,能作为线程的参数吗?
  8. wordpress 调整段落空两,段落间的距离
  9. 从技术到产品,转型的这一年我明白了很多道理
  10. BZOJ 2006 NOI2010 超级钢琴 划分树+堆
  11. visa虚拟卡生成器_虚拟银行卡汇总
  12. 武汉大学计算机学院徐霜,物联网工程专业建设与实践教学研究_余琍
  13. windows 命令行代理设置
  14. SGX攻防部分POC
  15. 一文简要了解词义消歧与实体消歧
  16. 分享几个程序员接活赚外快的平台
  17. 中国-省-市三级地图及世界地图在线编辑可视化工具上线
  18. 从钉钉后台对接考勤打卡信息(仅供参考)
  19. 电子科技大学和东北大学计算机专业哪个好,电子科技大学、南京航空航天大学、东北大学,你会怎么选择?...
  20. 从OSI七层模型详谈《计算机网络基础》

热门文章

  1. 对抗神经网络GAN到底学到了什么
  2. 博客 | Machine Learning Yearning 要点笔记
  3. Pytorch归一化方法讲解与实战:BatchNormalization、LayerNormalization、nn.BatchNorm1d和LayerNorm()和F.normalize()
  4. 世界人工智能发展究竟到了什么水平
  5. 腾讯首次发布 AI 白皮书讲了什么?
  6. 协作机器人鼻祖“重生”,卷土重来的Rethink能否给行业注入一针强心剂?
  7. 腾讯AI Lab开源世界首款自动化模型压缩框架PocketFlow:将深度学习装进口袋
  8. CSDN与易观联合发布《2017-2018中国人工智能产业路线图》
  9. 同为 Java 开发:有了这些 Java 项目经历,面大厂稳了!
  10. 工作 10 年后转行程序员,如今 35+ 岁并不焦虑!