Hari ini, guru ingin saya membantu mengganti lebih dari 200 foto mereka dengan latar belakang putih. Sebagian besar foto berwarna biru dan merah.
Gunakan PS? TIDAK! Gunakan java! Lai
Ya, reaksi pertama saya adalah menggunakan Java dan menemukan kode sumber untuk mendapatkan piksel gambar di internet. Setelah bergerak, saya mengada -ada dan butuh setengah menit untuk memproses lebih dari 200 foto.
/** * Function: * Batch convert blue-bottomed ink lights to white-bottomed* Mainly it can be processed in hundreds or thousands of pictures* @author Zhao Junfu* */ public class ImageColorDemo { public static void main(String args[]) throws IOException { /** * Image directory to be processed*/ File dir = new File("d:/d4"); / *** Sebutkan gambar di direktori dan dapatkan array*/ file [] file = dir.listFiles (); / *** Melintasi array*/ untuk (int x = 0; x <file.length; x ++) {/ *** Tentukan array RGB, karena pola RGB gambar diwakili oleh tiga 0-255, seperti White IS (255.255,25)*/ int [] RGB = new int [3]; / *** Buffered Stream digunakan untuk memproses gambar*/ bufferedImage bi = null; Coba { / *** Gunakan ImageIo untuk membaca gambar ke buffer* / bi = imageo.read (file [x]); } catch (Exception e) {E.PrintStackTrace (); } / *** Dapatkan panjang dan lebar gambar* / int lebar = bi.getWidth (); int tinggi = bi.getheight (); int minx = bi.getminx (); int miny = bi.getminy (); System.out.println ("Dalam proses:"+file [x] .getName ()); /*** Ini adalah piksel gambar. Karena warna belakang gambar harus diproses, warna pada piksel yang ditentukan perlu diganti dengan warna target* di sini adalah loop lapis kedua, melintasi setiap piksel pada panjang dan lebar*/ untuk (int i = minx; i <width; i ++) {for (int j = miny; j <light; j ++) {// {// {for (int j = miny; j <light; j ++) {// {/ {for (int j = miny; j <light; j ++) {// {/ {/ {for (int j = Miny; j <light; j ++) {// {// {for (int j = Miny; j <light; j ++) {// {/ {/ oW. / ** * Dapatkan nilai RGB pada piksel yang ditentukan (i, j), */ int pixel = bi.getrgb (i, j); / *** Lakukan operasi bit secara terpisah untuk mendapatkan nilai pada rgb*/ rgb [0] = (pixel & 0xff0000) >> 16; RGB [1] = (Pixel & 0xff000) >> 8; RGB [2] = (pixel & 0xff); /** * Perform color change operation, I want to change the blue base to white base, so I will determine whether the rgb value in the picture is in the blue range of pixels*/ if(rgb[0]<155&&rgb[0]>0 && rgb[1]<256&&rgb[1]>105 &&rgb[2]<256&&rgb[2]>105 ){ /** * Here is penilaian berlalu, kemudian ubah piksel menjadi putih */ bi.setrgb (i, j, 0xffffff); }}} System.out.println ("/T Pemrosesan selesai:"+file [x] .getName ()); System.out.println (); /*** Simpan objek buffer ke file baru*/fileOutputStream ops = FileOutputStream baru (file baru ("d:/d5/"+x+". Jpg")); Imageo.write (BI, "JPG", OPS); ops.flush (); ops.close (); }}} Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.