Java读取并修改图片的像素值
来源:互联网 发布:aloha什么软件 编辑:程序博客网 时间:2024/05/22 02:08
Java程序读取图片像素的值类,
package work;import java.awt.AWTException;import java.awt.Dimension;import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import java.awt.image.BufferedImage;import java.io.File;import javax.imageio.ImageIO;public class Image { /** * 读取一张图片的RGB值 * * @throws Exception */ public void getImagePixel(String image) throws Exception { int[] rgb = new int[3]; File file = new File(image); BufferedImage bi = null; try { bi = ImageIO.read(file); } catch (Exception e) { e.printStackTrace(); } int width = bi.getWidth(); int height = bi.getHeight(); int minx = bi.getMinX(); int miny = bi.getMinY(); System.out.println("width=" + width + ",height=" + height + "."); System.out.println("minx=" + minx + ",miniy=" + miny + "."); for (int i = minx; i < width; i++) { for (int j = miny; j < height; j++) { int pixel = bi.getRGB(i, j); // 下面三行代码将一个数字转换为RGB数字 rgb[0] = (pixel & 0xff0000) >> 16; rgb[1] = (pixel & 0xff00) >> 8; rgb[2] = (pixel & 0xff); System.out.println("i=" + i + ",j=" + j + ":(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + ")"); bi.setRGB(123, 123, 123); } } } /** * 返回屏幕色彩值 * * @param x * @param y * @return * @throws AWTException */ public int getScreenPixel(int x, int y) throws AWTException { // 函数返回值为颜色的RGB值。 Robot rb = null; // java.awt.image包中的类,可以用来抓取屏幕,即截屏。 rb = new Robot(); Toolkit tk = Toolkit.getDefaultToolkit(); // 获取缺省工具包 Dimension di = tk.getScreenSize(); // 屏幕尺寸规格 System.out.println(di.width); System.out.println(di.height); Rectangle rec = new Rectangle(0, 0, di.width, di.height); BufferedImage bi = rb.createScreenCapture(rec); int pixelColor = bi.getRGB(x, y); return 16777216 + pixelColor; // pixelColor的值为负,经过实践得出:加上颜色最大值就是实际颜色值。 } /** * @param args */ public static void main(String[] args) throws Exception { int x = 0; Image rc = new Image(); x = rc.getScreenPixel(100, 345); System.out.println(x + " - "); rc.getImagePixel("D:\\xiao.jpg"); }}
Java读取并修改像素的值。
package work;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.ByteArrayOutputStream;import java.io.File;import javax.imageio.ImageIO;import javax.swing.ImageIcon;public class Image1 { private void setAlpha(String os) { /** * 增加测试项 * 读取图片,绘制成半透明,修改像素 */ try { ImageIcon imageIcon = new ImageIcon(os); BufferedImage bufferedImage = new BufferedImage(imageIcon.getIconWidth(),imageIcon.getIconHeight() , BufferedImage.TYPE_4BYTE_ABGR); Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics(); g2D.drawImage(imageIcon.getImage(), 0, 0, imageIcon.getImageObserver()); //循环每一个像素点,改变像素点的Alpha值 int alpha = 100; for (int j1 = bufferedImage.getMinY(); j1 < bufferedImage.getHeight(); j1++) { for (int j2 = bufferedImage.getMinX(); j2 < bufferedImage.getWidth(); j2++) { int pixel = bufferedImage.getRGB(j2, j1); int[] rgb = new int[3]; rgb[0] = (pixel & 0xff0000) >> 16; rgb[1] = (pixel & 0xff00) >> 8; rgb[2] = (pixel & 0xff); System.out.println("i=" + j1 + ",j=" + j2 + ":(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + ")"); pixel = ( (alpha + 1) << 24) | (pixel & 0x00ffffff); bufferedImage.setRGB(j2, j1, pixel); } } g2D.drawImage(bufferedImage, 0, 0, imageIcon.getImageObserver()); //生成图片为PNG ImageIO.write(bufferedImage, "jpg", new File("D:\\xiao.jpg")); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { int x = 0; Image1 rc = new Image1(); rc.setAlpha("D:\\xiao.jpg"); rc.setAlpha("D:\\xiao.jpg"); }}
1 0
- Java读取并修改图片的像素值
- 读取图片并显示每个像素处的RGB值
- OpenCV 中读取一张图片的像素点,并显示
- c++ opencv读取图片像素值并进行加密
- VS2012+OpenCV246 读入图片并修改像素值
- iOS 遍历图片每个像素点并修改rgb值
- C++修改图片像素大小,求梯度,创建文件夹并读取文件数据,
- 图片像素、大小的修改
- Java读取图片像素和大小
- GDI+ 读取jpg图片每个像素的值
- python使用PIL库读取图片的像素值
- OpenCV-Python:访问像素值并修改、访问图片属性、设置ROI、分割合并图片
- 用opencv读取图像的每个像素值,鼠标点击获取每一个点,并显示像素
- windows下利用gdi+读取图片并转换成opengl纹理支持的像素格式
- Android 修改Bitmap图片像素的信息 RGB颜色值
- 读取图片像素,保存到文档中,并灰度
- PHP多图片上传并按照比例修改像素
- Cocoa读取图片像素
- vim使用系统剪切板
- How to refresh materialized view in oracle
- HDOJ 2042 不容易系列之二
- std::set自定义比较函数
- Matlab 生成任意扇形区域
- Java读取并修改图片的像素值
- VS2013编译最简单的PPAPI插件
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- hdu1228——A+B
- 推荐:如何高效学习使用Axure ?
- <LeetCode OJ> 62. / 63. Unique Paths(I / II)
- 树与二叉树的一些概念
- 外链时代已终结?营销外链时代才刚刚开始!
- 关于echo命令网上查的些小资源