溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

利用java怎么實(shí)現(xiàn)一個(gè)將圖片去色的功能

發(fā)布時(shí)間:2020-11-21 15:57:45 來源:億速云 閱讀:184 作者:Leah 欄目:編程語言

本篇文章為大家展示了利用java怎么實(shí)現(xiàn)一個(gè)將圖片去色的功能,內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

現(xiàn)在我們要將這樣的一張圖片

變成為

利用java怎么實(shí)現(xiàn)一個(gè)將圖片去色的功能

代碼

package com.epoint.wdg.test; 
 
import java.awt.Color; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
 
import javax.imageio.ImageIO; 
 
public class ImgTest { 
  public static void main(String[] args) throws IOException { 
    File file=new File("C://Users/wdg/Desktop/people.png"); 
    //showParamterofImg(file); 
    File file2=changeImgtoGray(file); 
    grayPicToBW(file2); 
  } 
  public static void getRGB(File file) throws IOException{ 
    int []rgb =new int[3]; 
    BufferedImage img=ImageIO.read(file); 
    int pixel=img.getRGB(2, 3); 
    // 下面三行代碼將一個(gè)數(shù)字轉(zhuǎn)換為RGB數(shù)字  
    rgb[0] = (pixel & 0xff0000) >> 16;  
    rgb[1] = (pixel & 0xff00) >> 8;  
    rgb[2] = (pixel & 0xff);  
    System.out.println(rgb[0]+"-"+rgb[1]+"-"+rgb[2]); 
     
  } 
  //把圖片變灰色 
  public static File changeImgtoGray(File file) throws IOException{ 
    float []rgb =new float[3]; 
    BufferedImage img=ImageIO.read(file); 
    //現(xiàn)在我需要獲取到?jīng)]一點(diǎn)的rgb 
    int y=img.getHeight(); 
    int x=img.getWidth(); 
    BufferedImage grayImage = new BufferedImage(x, y, BufferedImage.TYPE_BYTE_GRAY); 
    for(int i=0;i<x;i++){ 
      for(int j=0;j<y;j++){ 
        int pixel=img.getRGB(i, j); 
      // grayImage.setRGB(startX, startY, w, h, rgbArray, offset, scansize); 
         rgb[0] = (pixel & 0xff0000) >> 16;  
         rgb[1] = (pixel & 0xff00) >> 8;  
         rgb[2] = (pixel & 0xff);  
        int gray=(int) (rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11); 
         Color color=new Color(gray,gray,gray); 
         img.setRGB(i, j, color.getRGB()); 
 
      } 
    } 
    File newFile = new File("C://Users/wdg/Desktop/"+"/method5.jpg");  
    ImageIO.write(img, "jpg", newFile);  
    // grayPicToBW(newFile); 
    return newFile; 
  } 

其中最為重要的是這一部分:

int y=img.getHeight(); 
int x=img.getWidth(); 
 
for(int i=0;i<x;i++){ 
  for(int j=0;j<y;j++){ 
    int pixel=img.getRGB(i, j); 
     rgb[0] = (pixel & 0xff0000) >> 16;  
     rgb[1] = (pixel & 0xff00) >> 8;  
     rgb[2] = (pixel & 0xff);  
    int gray=(int) (rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11); 
     Color color=new Color(gray,gray,gray); 
     img.setRGB(i, j, color.getRGB()); 
 
  } 
} 
  File newFile = new File("C://Users/wdg/Desktop/"+"/method5.jpg");  
  ImageIO.write(img, "jpg", newFile);  

這一部分是獲取到到圖片的每一點(diǎn)的像素或者說ARGB:

int pixel=img.getRGB(i, j); 

然后進(jìn)一步的獲取到RGB,然后我們獲取到這點(diǎn)像素的灰度值,

int gray=(int) (rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11); 

并且創(chuàng)建一個(gè)顏色:

lor color=new Color(gray,gray,gray); 

img.setRGB(i, j, color.getRGB()); 

上述內(nèi)容就是利用java怎么實(shí)現(xiàn)一個(gè)將圖片去色的功能,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI