导航:首页 > 编程语言 > java获取rgb

java获取rgb

发布时间:2022-10-11 08:51:48

java 做彩色图像加密,提取rgb并改变rgb值,重组新的图片,加密没问题 ,解密时getRGB()返回值不正确

rgb加alpha值为32位,一般的加密算法范围数值超过此范围,数据会溢出,因此无法解回。
解决方案:找32位到32位的加密算法

② 给定一幅图像,用java读取每个像素的RGB三个颜色值

int rgbR;
int rgbG;
int rgbB;
int minx = 0;
int miny = 0;
try {
File file = new File("E:\\dd.png");
BufferedImage image = ImageIO.read(file);
int width = image.getWidth();//图片宽度
int height = image.getHeight();//图片高度

for (int i = minx; i < width; i++) {
for (int j = miny; j < height; j++) {
int pixel = image.getRGB(i, j); // 下面三行代码将一个数字转换为RGB数字
rgbR = (pixel & 0xff0000) >> 16;
rgbG = (pixel & 0xff00) >> 8;
rgbB = (pixel & 0xff);
System.out.println("i=" + i + ",j=" + j + ":(" + rgbR + "," + rgbG + "," + rgbB + ")");
}
}

System.out.println("图片宽度为:"+width+",高度为:"+height);

} catch (IOException e) {
System.out.println("读取文件出错");
e.printStackTrace();
}

③ java 怎么得到当前鼠标位置的颜色RGB值

import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
public class GetRectPixel {
public GetRectPixel() {
ImageHolder holder = new ImageHolder();
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.add(holder);
frame.getContentPane().add(panel);
frame.setSize(400,400);
frame.setVisible(true);
}
public static void main(String[] args) {
GetPixel getpixel = new GetPixel();
}
}
class ImageHolder extends Canvas{
BufferedImage bi ;//创建缓冲区图像
Image image;
MediaTracker mt ;//创建媒体跟踪器
int imageWidth; //图像宽度
int imageHeight;//图像高度
public ImageHolder() {
mt =new MediaTracker(this);
try{
image = Toolkit.getDefaultToolkit().createImage("gigi3.jpg");
mt.addImage(image,0);
mt.waitForAll();//等待直到所有的图像都以完成装填
imageWidth = image.getWidth(this);//获得单前图像的宽度
imageHeight = image.getHeight(this);//获得当前图像的长度
}
catch(Exception e){}
bi = new BufferedImage(imageWidth,imageHeight,BufferedImage.TYPE_INT_RGB);
addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent me){
//获得鼠标当前位置的横,纵坐标
int mouseX = (int)me.getPoint().getX();
int mouseY =(int) me.getPoint().getY();
//获得该处的rgb值
getPixel(mouseX,mouseY);
}
});
setSize(imageWidth,imageHeight);
}
public void paint(Graphics g){
int xCenter = (getSize().width / 2) - (imageWidth / 2);
int yCenter = (getSize().height / 2) - (imageHeight / 2);
g.drawImage(image, xCenter, yCenter, imageWidth, imageHeight, this);
}
public void getPixel(int x,int y){
//获得ImageHolder的色彩模型
ColorModel cm = this.getColorModel();
//把象素形式的色彩组件(ImageHolder)以rgb的形式返回。
int rgb = cm.getRGB(x*y);
//分别获得其r,g,b值。
int red = (rgb>>16)&0xff ;
int green = (rgb>>8)&0xff ;
int blue = (rgb)&0xff ;
System.out.println( "("+red+","+green+ ","+blue+ ")");
}
}

④ java:image.ImageIO类的getRGB()方法,返回的是什么

java:image.ImageIO类的getRGB()方法返回的是一个整型数据。
这个方法可以从图片的指定区域读取ARGB像素值,并存储到rgbData数组中,rgbData中的数据是以0xAARRGGBB格式存储的,代表每个像素的颜色属性和透明属性。返回值就是RGB色彩。
RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。

⑤ java 8位灰度图的灰度值怎么获取

publicintfilterRGB(intx,inty,intrgb){
inta=rgb&0xff000000;//将最高位(24-31)的信息(alpha通道)存储到a变量
intr=(rgb>>16)&0xff;//取出次高位(16-23)红色分量的信息
intg=(rgb>>8)&0xff;//取出中位(8-15)绿色分量的信息
intb=rgb&0xff;//取出低位(0-7)蓝色分量的信息
rgb=(r*77+g*151+b*28)>>8;//NTSCluma,算出灰度值
returna|(rgb<<16)|(rgb<<8)|rgb;//将灰度值送入各个颜色分量
}

⑥ java如何提取窗体中指定像素点的RGB值

robot类里面有一个方法能获取屏幕像素
robot.getPixelColor(int x, int y)
返回color 对象
然后color 对象里面有一个方法返回rgb值
color.getRGB()

⑦ java实现提取图片每一点的RGB

public class TestActionAction extends Action {
public void doSome(){
try {
//
//ImageIO.read("http://210.75.193.191:8080/Vector/4/3728/1275.png");
ImageIcon[] image={new ImageIcon("G://公司项目/Images/Map/157.png"),new ImageIcon("G://公司项目/Images/Map/158.png"),new ImageIcon("G://公司项目/Images/Map/159.png"),new ImageIcon("G://公司项目/Images/Map/160.png")};
//BufferedImage相当于一个画布,在存在于内存中
BufferedImage img=new BufferedImage((image.length)*256 ,256,BufferedImage.TYPE_INT_RGB);
//必须创建Graphics2D对象和drawImage,不然画出来的只是image.getIconWidth*image.getIconHeight()那么大一个全黑图像
Graphics2D gs=(Graphics2D)img.getGraphics();
for(int i=0;i<image.length;i++){
String k="";
gs.
}
gs.drawImage(image[0].getImage(), 0, 0, image[0].getImageObserver());
int huabuwid=img.getWidth();
int huabuhid=img.getHeight();
for(int i=0;i<huabuwid;i++){
for(int j=0;j<huabuhid;j++){
//基于坐标取出相对应的RGB
int rgb=img.getRGB(i, j);
int R = (rgb & 0xff0000) >> 16;
int G = (rgb & 0xff00) >> 8;
int B = (rgb & 0xff);
rgb=((R*256)+G)*256+B;
//把RGB值设置进相对应的坐标
img.setRGB(i, j, rgb);
}
}
gs.drawImage(image[1].getImage(), 256, 0, image[1].getImageObserver());
for(int i=0;i<huabuwid;i++){
for(int j=0;j<huabuhid;j++){
//基于坐标取出相对应的RGB
int rgb=img.getRGB(i, j);
int R = (rgb & 0xff0000) >> 16;
int G = (rgb & 0xff00) >> 8;
int B = (rgb & 0xff);
rgb=((R*256)+G)*256+B;
//把RGB值设置进相对应的坐标
img.setRGB(i, j, rgb);
}
}
gs.drawImage(image[2].getImage(), 512, 0, image[2].getImageObserver());
for(int i=0;i<huabuwid;i++){
for(int j=0;j<huabuhid;j++){
//基于坐标取出相对应的RGB
int rgb=img.getRGB(i, j);
int R = (rgb & 0xff0000) >> 16;
int G = (rgb & 0xff00) >> 8;
int B = (rgb & 0xff);
rgb=((R*256)+G)*256+B;
//把RGB值设置进相对应的坐标
img.setRGB(i, j, rgb);
}
}
gs.drawImage(image[3].getImage(), 768, 0, image[3].getImageObserver());
for(int i=0;i<huabuwid;i++){
for(int j=0;j<huabuhid;j++){
//基于坐标取出相对应的RGB
int rgb=img.getRGB(i, j);
int R = (rgb & 0xff0000) >> 16;
int G = (rgb & 0xff00) >> 8;
int B = (rgb & 0xff);
rgb=((R*256)+G)*256+B;
//把RGB值设置进相对应的坐标
img.setRGB(i, j, rgb);
}
}
//释放Graphics2D对象
gs.dispose();
//以流的方式保存文件
FileOutputStream outfile = new FileOutputStream("G:/1.png" );
ImageOutputStream i=ImageIO.createImageOutputStream(outfile);
ImageIO.write(img, "png", i);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static void main(String[] args){
new TestActionAction().doSome();
}
}

⑧ java 根据图片的rgb求灰度值

public int filterRGB(int x, int y, int rgb) {

int a = rgb & 0xff000000;//将最高位(24-31)的信息(alpha通道)存储到a变量
int r = (rgb >> 16) & 0xff;//取出次高位(16-23)红色分量的信息
int g = (rgb >> 8) & 0xff;//取出中位(8-15)绿色分量的信息
int b = rgb & 0xff;//取出低位(0-7)蓝色分量的信息
rgb = (r * 77 + g * 151 + b * 28) >> 8; // NTSC luma,算出灰度值
return a | (rgb << 16) | (rgb << 8) | rgb;//将灰度值送入各个颜色分量
}

⑨ Java实现根据分量计算rgb值,并分离rgb分量

要看清是RGB、还是BGR、、、、另外java中的byte再转成int时是会使用补数的(即是看到是负的)

int R = (pixel>>16) & 0xff;
int G = (pixel>>8) & 0xff;
int B = (pixel & 0xff);

阅读全文

与java获取rgb相关的资料

热点内容
安卓手机如何录制视频长时间 浏览:283
安全问题app哪个好 浏览:445
压缩水会变冰吗 浏览:526
小说配音app哪个靠谱 浏览:820
编译iso 浏览:944
照片生成pdf格式 浏览:194
病历转pdf 浏览:835
云服务器配硬件 浏览:978
服务器10k什么意思 浏览:21
pdfeditor汉化 浏览:884
新科学pdf 浏览:746
现在还有c语言编译吗 浏览:675
哪里买到单片机 浏览:480
linux文件打开数量 浏览:510
编译原理中什么是l属性文法 浏览:372
硬盘加密时出现的问题 浏览:61
如何退域命令 浏览:108
看书的app哪里看 浏览:291
服务器怎么调大 浏览:3
android天气apijson 浏览:984