如何用Java读出一张图片的RGB值?

(牛人可以从第六步开始看,牛人看了代码就知道怎么建文件夹啦!!

)

(1) 在刚刚建立项目的根目录新建一个文件夹date,例如,我的这个项目的根目录是:E:\WorkSpace\Java eclipse

WorkSpace\Pictures

我就在这个文件夹中新建目录date

(2) 在date中再新建一个文件夹Image,此时目录变为:E:\WorkSpace\Java eclipse

WorkSpace\Pictures\data\Image

(3) 在文件夹Image中放入你想读取数值的图片,并命名,例如我有一张图片为文件夹Image中的图片,我命名为xxx。

(4)在date文件夹中创建一个新的txt文件,并命名为:imagelist

(5)在之前的项目中新建类LoadImage

(6)做好以上工作之后,拷贝以下代码到类LoadImage中,并运行

import java.awt.*;

import java.awt.image.*;

import java.util.Random;

import java.io.*;

import javax.swing.*;

public class LoadImage {

public

static void main(String[] args) {

String myreadline = "";

//定义一个String类型的变量,用来每次读取一行

try {

//把imagelist.txt中的图片名称读入到新创建的FileReader对象中

FileReader fr = new

FileReader("data/imagelist.txt");

BufferedReader br = new

BufferedReader(fr); //把之前输入fr的字符流读入缓冲区br

//创建FileWriter对象(缓冲区),用来写入最后读到的字符流

FileWriter fw = new FileWriter("data/17d_result.txt");

BufferedWriter bw = new

BufferedWriter(fw); //将之前读入缓冲的fW输出

while (br.ready()) {

myreadline = br.readLine();//读取一行

//构造一个BufferedImage的缓冲区,得到图像的横竖坐标的大小

BufferedImage image = toBufferedImage(new

ImageIcon("data/Image/"+myreadline).getImage());

int height = image.getHeight();

int width = image.getWidth();

for (int y=0;y

for (int x=0;x

// 创建一个Color的对象color,这个color里面保存的就是image.getRGB(x, y)这个方法中在坐标点

//(x,y)得到的颜色

Color color = new Color(image.getRGB(x, y));

//得到这个像素点的颜色之后,用get的方法,得到这个像素点的红绿蓝三个颜色的数字表示

bw.write("("+color.getRed()+","+color.getGreen()+","+color.getBlue()+")");

bw.flush();

}

bw.newLine();

}

//System.out.println(myreadline);//在屏幕上输出

}

bw.flush(); //刷新该流的缓冲

bw.close();

br.close();

fw.close();

br.close();

fr.close();

} catch (IOException e) {

e.printStackTrace();

}

}

//

在缓冲区返回图片的内容

public

static BufferedImage toBufferedImage(Image image) {

if (image instanceof BufferedImage) {

return (BufferedImage) image;

}

// Determine if the image has transparent pixels; for this

method's

// implementation, see e661 Determining If an Image Has

Transparent

// Pixels

boolean hasAlpha = hasAlpha(image);

// Create a buffered image with a format that's compatible with

the

// screen

BufferedImage bimage = null;

GraphicsEnvironment ge = GraphicsEnvironment

.getLocalGraphicsEnvironment();

try {

// Determine the type of transparency of the new buffered image

int transparency = Transparency.OPAQUE;

if (hasAlpha) {

transparency = Transparency.BITMASK;

}

// Create the buffered image

GraphicsDevice gs = ge.getDefaultScreenDevice();

GraphicsConfiguration gc = gs.getDefaultConfiguration();

bimage = gc.createCompatibleImage(image.getWidth(null), image

.getHeight(null), transparency);

} catch (HeadlessException e) {

// The system does not have a screen

}

if (bimage == null) {

// Create a buffered image using the default color model

int type =

BufferedImage.TYPE_INT_RGB;

if (hasAlpha) {

type = BufferedImage.TYPE_INT_ARGB;

}

bimage = new BufferedImage(image.getWidth(null), image

.getHeight(null), type);

}

// Copy image to buffered image

Graphics g = bimage.createGraphics();

// Paint the image onto the buffered image

g.drawImage(image, 0, 0, null);

g.dispose();

return bimage;

}

// This

method returns true if the specified image has transparent

pixels

public

static boolean hasAlpha(Image image) {

// If buffered image, the color model is readily available

if (image instanceof BufferedImage) {

BufferedImage bimage = (BufferedImage) image;

return bimage.getColorModel().hasAlpha();

}

// Use a pixel grabber to retrieve the image's color model;

// grabbing a single pixel is usually sufficient

PixelGrabber pg = new PixelGrabber(image, 0, 0, 1, 1, false);

try {

pg.grabPixels();

} catch (InterruptedException e) {

}

// Get the image's color model

ColorModel cm = pg.getColorModel();

return cm.hasAlpha();

}

}

运行后的结果,你可以看到在你项目的工作区间多了一个17d_result.txt文件,这个文件就是记录你图片的RGB值的文档。

完成了上面的两个小例子(包括我之前的一篇图像处理的小文章),如果你真的很清楚是怎么做的,那就可以干很多事情了,可以对图片进行加密,或者进行傅里叶变换,或者进行k-means的聚类。

java 图片 rgb_简单的java图片处理——如何用Java读出一张图片的RGB值?相关推荐

  1. 图片太大_图片太大?手把手教你如何用java实现一个高质量图片压缩程序

    使用java几十行代码实现一个高质量图片压缩程序,再也不用去自己找网络的压缩程序啦!而且很多网上的工具还有水印或者其他的限制,自己动手写一个简单的应用,是再合适不过了. 一.实现原理 1.声明两个字符 ...

  2. python动态旋转图片_python简单实现旋转图片的方法

    本文实例讲述了python简单实现旋转图片的方法.分享给大家供大家参考.具体实现方法如下: # rotate an image counter-clockwise using the PIL imag ...

  3. 图片图层隐写_【软件】imageIN · 图影-隐藏文件到图片,简单轻快的图片隐写工具...

    还记得以前的图种制作吗,今天给大家分形下一个相关的工具. 度盘下载(imageIN Beta1.0 (2.18MB)) :pan.baidu.com/s/1hqve8YS 官网下载:本地下载 这是一个 ...

  4. 用java和mysql开发网站怎么实现_如何用java开发一个网站?

    java语言和类库:java语言是支持整个java技术的底层基础,java类库是随java语言 Java 运行系统:主要指java虚拟机,负责将java与平台无关的中间代码翻译成本机的 Java ap ...

  5. java 判断网络图片是否存在_请教:如何用java判断一个图片的网络地址是否有效?...

    import java.net.HttpURLConnection; import java.net.URL; import org.apache.log4j.Logger; /** * * * 文件 ...

  6. java做一个简单的数据库,哪个嵌入式数据库用Java写成一个简单的键/值存储?

    我最近问了一个关于Neo4j的问题,我有工作,似乎很好.它是可嵌入的,它是用Java编写的,没有(太)许多依赖. 然而,它是一个图形数据库,我不知道这是一个好主意或不使用它作为一个简单的键/值存储. ...

  7. QT中循环显示图片和简单的显示图片

    请关注我的github https://github.com/linqiaozhou 以下实例代码不久后将会上传到我的github 这是我最近一个项目中的部分代码 //以下是简单的在QT中显示图片的代 ...

  8. java简单的记事本程序_如何用JAVA编写简单的记事本程序?

    展开全部 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; i ...

  9. java 获取路由器mac_求好人帮助,如何用java语言获取像无线路由器上的MAC地址,我会重赏...

    如图所示的无线路由max地址,,挺说可以利用java的工具类java.net.NetworkInterface获取次无线网卡的max,我看了某个人的微博,他这样写:"通过java.net.N ...

最新文章

  1. 使用sed和awk取除最后两个字段之外的字段
  2. 求大数阶乘(10000以内)
  3. C#入门篇5-6:流程控制语句 foreach
  4. MySQL基础之增删改查
  5. AD 10 原理图编译错误
  6. sizeof()与strlen()
  7. linux CentOS 7 安装 java1.8 (tar.gz)
  8. 泛型--定制泛型接口、泛型类--介绍篇
  9. Spring Boot -Shiro配置多Realm 1
  10. 计算机公式or,【转载】 odds、OR和RR的计算公式和实际意义
  11. android组合控件 重叠,Android 组合控件实现布局的复用的方法
  12. 多模态AI开发套件HiLens Kit:超强算力彰显云上实力
  13. 软件包管理:源码包管理-源码包与RPM包的区别
  14. Mac OS X下的移动光标和文字编辑快捷键
  15. datagridview自动保存修改数据
  16. android多个网络请求如何依次执行,Android 并发和串行网络请求
  17. 对比会声会影与剪映哪个制作转场效果更专业
  18. android can为啥能发收不到数据_大数据显示:报读MBA已是未来竞争力提升的必然趋势...
  19. MSN退休,寻找微软如何融合MSN的答案:体验skype6国际版MSN功能。
  20. java IO流学习总结

热门文章

  1. 【Django】Django Auth认证组件详述
  2. 简单使用AspectJ
  3. 用c语言计算正四棱锥的体积,《计算机图形学》习题与解答.doc
  4. VIPS:基于视觉的Web页面分页算法
  5. 竖流式沉淀池集水槽设计计算_沉淀池设计计算设计参数.docx
  6. 【汇正财经】什么是市盈率?
  7. 重提“不要看《深入浅出mfc》!”一文
  8. java英文不好可以学吗_英语不好可以学好Java吗?
  9. CSDN产品设计-脑残
  10. 子网掩码取反怎么取_求子网掩码最简单,最有效的计算方法。