Este artigo apresenta o código de exemplo para adicionar marcas d'água às imagens Java. É muito conveniente implementar marcas d'água em Java. A marca d'água pode ser imagens ou texto. O conteúdo específico é o seguinte
Pacote Michael.io.image; importar java.awt.alphacomposite; importar java.awt.graphics2d; importar java.awt.image; importar java.awt.renderinghints; importar java.awt.image.bufferiMage; importar java.io.file; importar java.io.fileInputStream; importar java.io.fileOutputStream; importar java.io.inputStream; importar java.io.OutputStream; importar javax.imageio.imageio; importar javax.swing.imageicon; import com.sun.image.codec.jpeg.jpegcodec; importar com.sun.image.codec.jpeg.jpegimagedecoder; import com.sun.image.codec.jpeg.jpegImageEncoder; /** * Imagem Watermark * @blog http://sjsky.iteye.com * @Author Michael */public class ImageMarkLogobyicon {/** * @param args */public static void main (string [] args) {strcimgpath = d: /test/michel/michel/michel/michel/mybl_bl) {strcImgpath = "d: /test/michel/michel/michel/michel/mybl/mybl1 String iconpath = "d: /test/michael/blog_logo.png"; String TargetPath = "d: /test/michael/img_mark_icon.jpg"; String TargetPath2 = "d: /test/michael/img_mark_icon_rotate.jpg"; // Adicione a marca d'água à imagem ImageMarkLogobyicon.MarkImageByicon (ICONPATH, SRCIMGPATH, TargetPath); // Adicione marca d'água à imagem, a marca d'água Rotação -45 imagemarkLogobyicon.MarkImageByicon (iconpath, srcimgpath, TargetPath2, -45); } / *** Adicione uma marca d'água à imagem* @param iconPath Watermark Caminho da imagem* @param srcimgpath caminho de imagem de imagem* @param alvopath alvo image path* / public static void MarkImageByicon (string iconPath, strcimgpath, string alvo) {MarkImageByicon (icoNPathpath, srcimghpath, string alvo) {n) } / *** Adicione uma marca d'água à imagem e defina o ângulo de rotação da imagem da marca d'água* @Param ICONPATH Watermark Path* @param srcimgpath path de imagem* @param alvopath alvo imagem de imagem* @param watermark ângulo de rotação de imagem* / public static void markImageByicon (strinpathpathpathpath) srcim); tente {imagem srcimg = imageio.read (novo arquivo (srcimgpath)); BufferImage buffimg = new bufferImage (srcimg.getwidth (null), srcimg.getheight (null), bufferiMage.type_int_rgb); // obtenha o objeto de pincel // gráficos g = buffimg.getgraphics (); Graphics2d g = buffimg.creategraphics (); // 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); if (null! = grau) {// Defina a rotação da marca d'água g.rotate (math.toradians (grau), (dupla) buffimg.getwidth () / 2, (duplo) buffimg .getHeight () / 2); } // O caminho da imagem da marca d'água é geralmente gif ou png, para que a transparência possa ser definida Imageicon imgicon = new Imageicon (ICONPATH); // Obtenha o objeto de imagem. Imagem img = imgicon.getImage (); alfa flutuante = 0,5f; // transparência G.SetComposite (alphacomposite.getInstance (alphacomosite.src_atop, alfa)); // indica a localização da imagem da marca d'água G.Drawimage (IMG, 150, 300, NULL); g.SetComPosite (alphacomposite.getInstance (alphacomposite.src_over)); G.Dispose (); OS = new FileOutputStream (TargerPath); // gerar imagem imageio.write (buffimg, "jpg", os); System.out.println ("Imagem terminou em adicionar selo do ícone ..."); } catch (Exceção e) {e.printStackTrace (); } finalmente {tente {if (null! = os) os.close (); } catch (Exceção e) {e.printStackTrace (); }}}}Deixe -me compartilhar com você outro exemplo:
importar java.awt.color; importar java.awt.font; importar java.awt.graphics; importar java.awt.image; importar java.awt.image.bufferedImage; import javaimage.file; import java.io.fileoutStream; importação; importar; com.sun.image.codec.jpeg.jpegcodec; import com.sun.image.codec.jpeg.jpegImageEncoder; classe final final imageUtils {public imageUtils () {}/** * public final static string getPressimgPath () {return ApplicationContext * .getRealPath ("/modelo/data/util/shuiyin.gif"); } *//** * Imprima a imagem na imagem * * @param Pressimg - * Arquivo de marca de água * @param TargetImg - * arquivo de destino * @param x * --x coordena * @param y * - -y coordenas */public Final Static PressImage (string press, string FileImg, Int X, Int y) {{Try Imagem src = imageio.read (_file); int wideth = src.getwidth (nulo); int height = src.getheight (nulo); Imagem bufferedImage = new bufferImage (wideth, altura, bufferImage.type_int_rgb); Gráficos g = image.creategraphics (); G.Drawimage (src, 0, 0, wideth, altura, nulo); // Arquivo de marca d'água _filebiao = novo arquivo (pressimg); Imagem src_biao = imageio.read (_filebiao); int wideth_biao = src_biao.getwidth (null); int a altura_biao = src_biao.getheight (null); G.Drawimage (src_biao, (wideth - wideth_biao) / 2, (altura - altura_biao) / 2, wideth_biao, height_biao, nulo); // final do arquivo de marca d'água g.dispose (); FileOutputStream Out = new FileOutputStream (TargetImg); JpegImageEncoder coder = jpegCodec.createjpegencoder (out); coder.Encode (imagem); out.Close (); } catch (Exceção e) {e.printStackTrace (); }} / ** * Imprima o texto da marca de água * * @param PressText * --text * @param TargetImg - * Imagem de destino * @param fontName - * Nome da font * @param fontStyle - * font style * @param color - * cor cor * @param fontSize - * tamanho * @param x -Offt * TargetImg, String FontName, int fontStyle, int cor, int fontSize, int x, int y) {try {arquivo _file = new File (TargetImg); Imagem src = imageio.read (_file); int wideth = src.getwidth (nulo); int height = src.getheight (nulo); Imagem bufferedImage = new bufferImage (wideth, altura, bufferImage.type_int_rgb); Gráficos g = image.creategraphics (); G.Drawimage (src, 0, 0, wideth, altura, nulo); g.setColor (color.red); G.SetFont (New Font (Fontname, Fontstyle, Fontsize)); G.DrawString (PressText, Wideth - fontsize - x, altura - fontsize / 2 - y); G.Dispose (); FileOutputStream Out = new FileOutputStream (TargetImg); JpegImageEncoder coder = jpegCodec.createjpegencoder (out); coder.Encode (imagem); out.Close (); } catch (Exceção e) {System.out.println (e); }} public static void main (string [] args) {PressImage ("f: /logo.png", "f: /123.jpg", 0, 0); }}Espero que este artigo seja útil para que todos usem o idioma Java para adicionar marcas d'água às imagens.