Hoy, el maestro quería que me ayudara a reemplazar sus más de 200 fotos con fondo blanco. La mayoría de las fotos son azules y rojos.
¿Usar PS? ¡No! ¡Usa Java! !
Sí, mi primera reacción fue usar Java y encontrar un código fuente para obtener píxeles de imagen en Internet. Después de hacer un movimiento, lo inventé y me llevó medio minuto procesar más de 200 fotos.
/*** Función:* Convierta las luces de tinta con fondo azul en el fondo blanco* Principalmente se puede procesar en cientos o miles de imágenes* @author zhao junfu**/public class imageColordemo {public static void main (string args []) lanza ioexception {/*** Director de imagen para procesarse*/archivo dir = nuevo archivo (nuevo archivo ("D4"); / *** Enumere las imágenes en el directorio y obtenga la matriz*/ file [] archivos = dir.listfiles (); / *** atravesando la matriz*/ for (int x = 0; x <files.length; x ++) {/ *** Definir una matriz RGB, porque el patrón RGB de la imagen está representado por tres 0-255, como White IS (255,255,255)*/ int [] rgb = new int [3]; / *** flujo tamponado utilizado para procesar la imagen*/ bufferedimage bi = null; Pruebe { / *** Use ImageIO para leer la imagen en el búfer* / bi = imageIO.read (archivos [x]); } catch (Exception e) {E.PrintStackTrace (); } / *** Obtenga la longitud y el ancho de la imagen* / int width = bi.getWidth (); int altura = bi.getheight (); int minx = bi.getminx (); int miny = bi.getMiny (); System.out.println ("en proceso:"+archivos [x] .getName ()); /*** Aquí están los píxeles de la imagen. Debido a que el color posterior de la imagen se debe procesar, el color en el píxel especificado debe reemplazarse con el color objetivo* Aquí hay un bucle de segunda capa, atravesando cada píxel en la longitud y ancho*/ for (int i = minx; i <width; i ++) {para (int j = miny; j <altura; j ++) {// system.out.print (bi.getrg (jw); / ** * Obtenga el valor RGB en el píxel especificado (i, j), */ int pixel = bi.getrgb (i, j); / *** Realice las operaciones de bit por separado para obtener el valor en rgb*/ rgb [0] = (píxel y 0xff0000) >> 16; rgb [1] = (píxel y 0xff000) >> 8; rgb [2] = (píxel y 0xff); /*** Realizar operación de cambio de color, quiero cambiar la base azul a la base blanca, por lo que determinaré si el valor RGB en la imagen está en el rango azul de píxeles* /if (rgb [0] <155 && rgb [0]> 0 && rgb [1] <256 && rgb [1]> 105 && rgb [2] <256 && rgb [2] 105) El juicio pasó, luego cambie el píxel a blanco */ bi.setrgb (i, j, 0xffffff); }}} System.out.println ("/t El procesamiento está completado:"+archivos [x] .getName ()); System.out.println (); /*** Guarde el objeto Buffer en un nuevo archivo*/FileOutputStream OPS = nuevo FileOutputStream (nuevo archivo ("D:/D5/"+x+". Jpg")); Imageio.write (bi, "jpg", ops); ops.flush (); ops.close (); }}} Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.