Hoje, o professor queria que eu ajudasse a substituir suas mais de 200 fotos pelo fundo branco. A maioria das fotos é azul e vermelha.
Usar ps? Não! Use Java! !
Sim, minha primeira reação foi usar o Java e encontrar um código -fonte para obter pixels de imagem na Internet. Depois de fazer uma jogada, comecei e demorei meio minuto para processar mais de 200 fotos.
/*** Função:* O lote converte luzes de tinta com fundo azul em fundo branco* principalmente pode ser processado em centenas ou milhares de fotos* @author zhao junfu**/public class imageColordemo {public static void main (string args []) throws ioexception {/*** imagem para ser processado para ser. / *** Liste as imagens no diretório e obtenha a matriz*/ file [] arquivos = DIR.ListFiles (); / *** Atravessando a matriz*/ para (int x = 0; x <files.length; x ++) {/ *** Defina uma matriz RGB, porque o padrão RGB da imagem é representado por três 0-255, como o branco IS (255,255,255)*/ int [] rgb = INT [3]; / *** fluxo tamponado usado para processar a imagem*/ bufferImage bi = null; tente { / *** Use Imageio para ler a imagem no buffer* / bi = imageio.read (arquivos [x]); } catch (Exceção e) {e.printStackTrace (); } / *** Obtenha o comprimento e a largura da imagem* / int width = bi.getWidth (); int height = bi.getHeight (); int minx = bi.getminx (); int miny = bi.getMiny (); System.out.println ("em processo:"+arquivos [x] .getName ()); /*** Aqui estão os pixels da imagem. Como a cor traseira da imagem deve ser processada, a cor no pixel especificada precisa ser substituída pela cor alvo* aqui está um loop de segunda camada, percorrendo cada pixel no comprimento e largura*/ for (int i = minx; i <width; i ++) {para (int j = miny; j <altura; / ** * Obtenha o valor RGB no pixel especificado (i, j), */ int pixel = bi.getRgb (i, j); / *** Execute operações de bit separadamente para obter o valor em rgb*/ rgb [0] = (pixel & 0xff0000) >> 16; rgb [1] = (Pixel & 0xff000) >> 8; rgb [2] = (Pixel & 0xff); /*** Execute a operação de mudança de cor, quero alterar a base azul para base branca, então determinarei se o valor RGB na imagem está na faixa azul de pixels* /if (rgb [0] <155 && rgb [0]> 0 && rgb [1] <256 && rgb [1] 105 && rgb [2] O julgamento passou e depois mude o pixel para branco */ bi.setrgb (i, j, 0xffffff); }}} System.out.println ("/t processamento é concluído:"+arquivos [x] .getName ()); System.out.println (); /*** Salvar o objeto Buffer em um novo arquivo*/FileOutputStream ops = new FileOutputStream (novo File ("D:/D5/"+X+". JPG"); Imageio.write (bi, "jpg", ops); ops.flush (); ops.close (); }}} O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.