導航:首頁 > 編程語言 > 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相關的資料

熱點內容
android平滑滾動效果 瀏覽:841
什麼是編譯器指令 瀏覽:219
微控制器邏輯命令使用什麼匯流排 瀏覽:885
程序員在學校里是學什麼的 瀏覽:601
oraclejava數據類型 瀏覽:890
程序員考注冊會計師 瀏覽:957
怎麼使用access的命令按鈕 瀏覽:899
有點錢app在哪裡下載 瀏覽:832
博途v15解壓後無法安裝 瀏覽:205
什麼是根伺服器主機 瀏覽:438
安卓手游怎麼申請退款 瀏覽:555
安卓系統如何分享網頁 瀏覽:278
ad如何編譯pcb工程 瀏覽:414
除了滴滴app哪裡還能用滴滴 瀏覽:399
截圖怎麼保存文件夾然後壓縮 瀏覽:8
幻影伺服器怎麼樣 瀏覽:28
具體哪些廣東公司招程序員 瀏覽:871
嵌入式編譯器教程 瀏覽:307
ssl數據加密傳輸 瀏覽:87
51單片機定時器方式2 瀏覽:332