Hoje encontrei a necessidade de preencher a imagem carregada com marcas d'água. Procurei on -line por um longo tempo e defina a marca d'água no local especificado. O código a seguir foi transformado pelo código que encontrei online. Vamos dar uma olhada na foto do efeito primeiro
O método de implementação é discutido abaixo:
Etapa 1: Use o software PS ou Meitu para projetar imagens de marca d'água, como:
Etapa 2: Coloque o seguinte código na classe:
pacote org.platform.framework.commons.util; importar java.awt.alphacomposite; importar java.awt.color; importar java.awt.font; importar java.awt.graphics2d; import java.awt.image; import java.awt.RenderHiNTSs; java.io.file; importar java.io.fileOutputStream; importar java.io.inputStream; importar java.io.outputStream; importar javax.imageio.imageio; importação javax.imagemarking.imageicon; significador.founder.cms.watermark.utilyarkLoutilil; { / ** transparência da marca d'água* / float estático privado alfa = 0,5f; / ** Ângulo de rotação da imagem da marca d'água*/ grau duplo estático privado = 0f; Intervalo estático privado = 0; / ** * Defina parâmetros da marca d'água, use o valor padrão sem configurar * * @param alpha * transparência da marca d'água * @param grau * ângulo de rotação da imagem da marca d'água * * @param intervalo * intervalo de imagem da marca d'água */ public static setImageMarkOptions (float alpha, int de grau, intace) {se (alfha! } if (grau! = 0f) {imagemarkutil.degree = grau; } if (interval! = 0f) {imagemarkutil.interval = intervalo; } } /** * Add a watermark image to the image* * @param waterImgPath * Watermark image path* @param srcImgPath * Source image path* @param targetPath * Target image path*/ public static void waterMarkByImg(String waterImgPath, String srcImgPath, String targetPath) throws Exception { waterMarkByImg(waterImgPath, srcImgPath, targetPath, 0); } / *** Adicione uma imagem de marca d'água à imagem** @param waterImgpath* Caminho da imagem da marca d'água* @param srcimgpath* caminho da imagem de fonte* @param TargetPath* Caminho da imagem de destino* / public static void WatermarkByImg (string WaterImgpath, srcimg) {try, {WatermarkiMg (WaterImpathpath, srcimpath); } Catch (Exceção e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }} / *** Adicione uma imagem da marca d'água à imagem e defina o ângulo de rotação da imagem da marca d'água** @param waterImgpath* Caminho da imagem da marca d'água* @param srcimgpath* Caminho da imagem de origem* @param alvopathpathbymgathinGhinGhinGrate* @param graus* Ângulo de imagem da imagem* static string) {OutputStream OS = null; tente {imagem srcimg = imageio.read (novo arquivo (srcimgpath)); BufferImage buffimg = new bufferImage (srcimg.getwidth (null), srcimg.getheight (null), bufferiMage.type_int_rgb); // 1. Obtenha o objeto de escova Graphics2d g = buffimg.creategraphics (); // 2. Defina o processamento de borda irregular do segmento de linha G.SetRenderingHint (renderinghints.key_interpolation, renderinghints.value_interpolation_bilinear); G.Drawimage (srcimg.getScaledInstance (srcimg.getwidth (null), srcimg .getheight (null), image.scale_smooth), 0, 0, nulo); // 3. Defina a rotação da marca d'água se (0! = Grau) {g.rotate (math.toradians (grau), (dupla) buffimg.getwidth () / 2, (duplo) buffimg .getHeight () / 2); } // 4. O caminho da imagem da marca d'água que a imagem da marca d'água geralmente é gif ou png, para que a transparência possa ser definida Imageicon imgicon = new Imageicon (WaterImgPath); // 5. Obtenha o objeto de imagem. Imagem img = imgicon.getImage (); g.SetComPosite (alphacomposite.getInstance (alphacomposite.src_atop, alfa)); // 6. A localização da imagem da marca d'água é para (int altura = intervalo + imgicon.geticonheight (); altura <buffimg .getHeight (); altura = altura + intervalo + imgicon.geticonheight ()) {para (int = intervalo + imgicon.geticonwidth (); peso <backim. imgicon.geticonwidth ()) {g.drawimage (img, peso - imgicon.geticonwidth (), altura - imgicon.geticonheight (), nulo); }} g.setCompose (alphacomposite.getInstance (alphacomposite.src_over)); // 7. Libere o recurso G.Dispose (); // 8. Gere a imagem OS = new FileOutputStream (TargerPath); Imageio.write (buffimg, "jpg", os); System.out.println ("Imagem terminou em adicionar imagem de marca d'água"); } catch (Exceção e) {e.printStackTrace (); } finalmente {tente {if (null! = os) os.close (); } catch (Exceção e) {e.printStackTrace (); }}} public static void main (string [] args) {System.out.println (".. comece a adicionar a imagem da marca de água ..."); /*** Endereço do arquivo da imagem da marca d'água do WaterMarkPath após o upload bem -sucedido*/// modifique os parâmetros padrão // imagemarkutil.setImageMarkoptions (0,0f, 0, 20); //ImageMarkutil.watermarkbyimg(watermarkPath, uploadpath); System.out.println (".. Adicione a imagem da marca d'água ao fim ..."); }} Etapa 3: Onde o upload é bem -sucedido, ligue para esta classe, como:
/ *** Endereço da imagem da marca de água WaterMarkPath* Endereço do arquivo UPLOPLEATH Após o upload bem -sucedido*/ imagemarkutil.watermarkbyImg (WaterMarkPath, uploadPath); Se você acha que o intervalo da marca d'água está muito próxima, pode definir o intervalo através do seguinte código: // Modificar os parâmetros padrão imagemarkutil.SetImageMarkoptions (0,0F, 0, 20); Imagemarkutil.watermarkbyImg (WaterMarkPath, UploadPath);
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.