java實(shí)現(xiàn)圖片反色處理示例
本文實(shí)例為大家分享了java實(shí)現(xiàn)圖片反色處理的具體代碼,供大家參考,具體內(nèi)容如下
效果對(duì)比
原圖
反色處理
原圖
反色處理
核心代碼實(shí)現(xiàn)
import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.*; public class ImageColor { /** * @Description: 反色 * @param imgPath 圖片路徑 * @param fileUrl 輸出圖片路徑 * @throws */ public static void inverse(String imgPath, String fileUrl){ try { FileInputStream fileInputStream = new FileInputStream(imgPath); BufferedImage image = ImageIO.read(fileInputStream); //生成字符圖片 int w = image.getWidth(); int h = image.getHeight(); BufferedImage imageBuffer = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);; // 繪制字符 for (int y = 0; y < h; y++) { for (int x = 0; x< w; x++) { int rgb = image.getRGB(x, y); int R = (rgb & 0xff0000) >> 16; int G = (rgb & 0x00ff00) >> 8; int B = rgb & 0x0000ff; int newPixel=colorToRGB(255-R,255-G,255-B); imageBuffer.setRGB(x,y,newPixel); } } ImageIO.write(imageBuffer, "png", new File(fileUrl)); //輸出圖片 } catch (Exception e) { e.printStackTrace(); } } /** * @Description: 顏色轉(zhuǎn)rgb值 * @throws */ public static int colorToRGB(int red,int green,int blue){ int newPixel=0; newPixel=newPixel << 8; newPixel+=red; newPixel=newPixel << 8; newPixel+=green; newPixel=newPixel << 8; newPixel+=blue; return newPixel; } public static void main(String[] args) throws IOException { inverse("C:\\Users\\liuya\\Desktop\\laoying.png","C:\\Users\\liuya\\Desktop\\logo_0.png"); } }
補(bǔ)充知識(shí)
三基色是光的紅,綠,藍(lán)
0xff0000 為RGB十六位制的紅色
0x00ff00 為RGB十六位制的綠色
0x0000ff 為RGB十六位制的藍(lán)色
運(yùn)行主方法即可。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于spring中不同包中類名相同報(bào)錯(cuò)問(wèn)題的總結(jié)
這篇文章主要介紹了關(guān)于spring中不同包中類名相同報(bào)錯(cuò)問(wèn)題的總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06Java concurrency線程池之線程池原理(四)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java concurrency線程池之線程池原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Struts1教程之ActionMapping_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Struts1教程之ActionMapping,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09Java數(shù)據(jù)類型Integer與int的區(qū)別詳細(xì)解析
這篇文章主要介紹了Java數(shù)據(jù)類型Integer與int的區(qū)別詳細(xì)解析,Ingeter是int的包裝類,int的初值為0,Ingeter的初值為null,int和integer(無(wú)論new否)比,都為true,因?yàn)闀?huì)把Integer自動(dòng)拆箱為int再去比,需要的朋友可以參考下2023-12-12如何創(chuàng)建SpringBoot項(xiàng)目
這篇文章主要介紹了如何創(chuàng)建SpringBoot項(xiàng)目,幫助大家更好的學(xué)習(xí)和使用springboot框架,感興趣的朋友可以了解下2021-01-01Java命令行運(yùn)行錯(cuò)誤之找不到或無(wú)法加載主類問(wèn)題的解決方法
這篇文章主要給大家介紹了關(guān)于Java命令行運(yùn)行錯(cuò)誤之找不到或無(wú)法加載主類問(wèn)題的解決方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01SpringMVC整合SSM實(shí)現(xiàn)表現(xiàn)層數(shù)據(jù)封裝詳解
這篇文章主要介紹了SpringMVC整合SSM實(shí)現(xiàn)表現(xiàn)層數(shù)據(jù)封裝,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-10-10