java 中如何获得灰度图像的像素值,getRGB和getRaster有什么区别?关于图像像素值,我想要先讲一下Java中如何组织一个图像对象BufferedImage的 ,
一个BufferedImage的像素数据储存在Raster中,ColorModel里面储存颜色空间,类型等
信息 , 当前Java只支持一下三种图像格式- JPG,PNG,GIF,如何向让Java支持其它格式,首
先要 完成Java中的图像读写接口 , 然后打成jar,加上启动参数- Xbootclasspath/p
newimageformatIO.jar即可 。
取得BufferedImage的代码如下:
File file = new File("D:\\test\\blue_flower.jpg");
BufferedImage image = ImageIO.read(file);
取得像素使用getRGB,代码如下:
int type= image.getType();
【java图片差异捕捉代码 java图片差异捕捉代码是什么】if ( type ==BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB )
return (int [])image.getRaster().getDataElements(x, y, width, height, pixels );
else
return image.getRGB( x, y, width, height, pixels, 0, width );
写入像素 , 才可能用到getRaster,在type为ARGB 或RGB时 , 必须使用getRaster().setDataElements方式设置,其他格式直接setRGB,代码如下:
int type= image.getType();
if ( type ==BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB )
image.getRaster().setDataElements(x, y, width, height, pixels );
else
image.setRGB(x, y, width, height, pixels, 0, width );
java中如何用鼠标点击截取一张图片的某部分(希望有具体代码)DivImageByMouse是个JPanel子类,把main去掉,add到别的容器下也可以正常使用,是按照鼠标移动取的,要按200*200的取要稍微改动一下
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class DivImageByMouse extends JPanel{
BufferedImage image=null;
int x1,y1,x2,y2;
publicDivImageByMouse(File file){
super();
this.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e) {
x1=e.getX();
y1=e.getY();
}
public void mouseReleased(MouseEvent e) {
x2=e.getX();
y2=e.getY();
int x=x1x2?x1:x2;
int y=y1y2?y1:y2;
int w=(x1x2?x1:x2)-x;
int h=(y1y2?y1:y2)-y;
Image image=DivImageByMouse.this.getImageByClip(x, y, w, h);
setClipboardImage2(image);
x1=y1=x2=y2=0;
JOptionPane.showMessageDialog(DivImageByMouse.this,"图片已保存到系统粘贴板!","图片已保存",JOptionPane.INFORMATION_MESSAGE);
DivImageByMouse.this.repaint();
}
});
this.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e) {
x2=e.getX();
y2=e.getY();
DivImageByMouse.this.repaint();
}
});
try {
image=ImageIO.read(file);
} catch (IOException e) {
System.out.println("输入文件不是一个图片文件!");
}
}
public Image getImage(){
return image;
}
public Image getImageByClip(int x,int y,int w,int h){
int rgbs[]=new int[w*h];
rgbs=image.getRGB(x,y, w, h, rgbs,0,w);
BufferedImage tmpImage=new BufferedImage(w,h,BufferedImage.TYPE_INT_ARGB);
推荐阅读
- 直播程序与设备,pc端直播设备
- 关于怎么把外链加到公众号的信息
- excel函数怎么用新手,excel函数实用技巧
- 史上最炫酷的动作游戏,超炫动作游戏
- 校验和java代码 java校验整数
- 线上公会如何运行营销策略,线上公会好还是线下公会好
- 如何查询mysql的下一个序号,如何查询mysql的下一个序号是什么
- 单机开车模拟游戏,单机开车游戏闯关
- java代码中的箭头指向 java 箭头什么意思