Este artículo presenta el código de ejemplo para agregar marcas de agua a Java Pictures. Es muy conveniente implementar marcas de agua en Java. La marca de agua puede ser imágenes o texto. El contenido específico es el siguiente
Paquete Michael.io.image; import java.awt.alphacomposis; import java.awt.graphics2d; import java.awt.image; import java.awt.renderinghints; import java.awt.image.bufferedImage; import java.io.file; import java.io.fileInputStream; import java.io.fileOutputStream; import java.io.inputstream; import java.io.outputstream; import javax.imageio.imageio; import javax.swing.imageicon; import com.sun.image.codec.jpeg.jpegcodec; import com.sun.image.codec.jpeg.jpegimageCoder; import com.sun.image.codec.jpeg.jpegimageEncoder; /** * Image Watermark * @blog http://sjsky.iteye.com * @author Michael */public class imageMarkLogobyicon {/** * @param args */public static void main (string [] args) {String srcimgpath = "d: /test/michael/myblog_01.png"; Cadena iconpath = "d: /test/michael/blog_logo.png"; Cadena TargetPath = "d: /test/michael/img_mark_icon.jpg"; Cadena TargetPath2 = "d: /test/michael/img_mark_icon_rotate.jpg"; // Agregar marca de agua a la imagen ImageMarkLogobyicon.MarkimageByicon (IconPath, SrcimgPath, TargetPath); // Agregue la marca de agua a la imagen, Rotación de marca de agua -45 ImageMarkLogobyicon.MarkimageByicon (IconPath, SrcimgPath, TargetPath2, -45); } / *** Agregue una marca de agua a la imagen* @param iconpath Watermark ruta de imagen* @param srcimgpath ruta de imagen de origen* @param targetPath Target Ruta de imagen* / public static void MarkImageicon (String IconPath, String SrcImgpath, String TargetPath) {MarkImageByicon (IconPath, srcimgpath, targetPath, nalull, nalull, nalul } /** * Add a watermark to the image and set the rotation angle of the watermark image* @param iconPath Watermark image path* @param srcImgPath Source image path* @param targetPath Target image path* @param degree Watermark image rotation angle*/ public static void markImageByIcon(String iconPath, String srcImgPath, String targetPath, Integer degree) { OutputStream os = nulo; intente {Image srcimg = imageIO.read (nuevo archivo (srcimgpath)); BufferedImage Buffimg = nueva BufferedImage (srcimg.getwidth (null), srcimg.getheight (null), bufferedimage.type_int_rgb); // Obtener el objeto de pincel // gráficos g = buffimg.getgraphics (); Gráfico2d g = buffimg.createGraphics (); // Establezca el procesamiento de borde irregular del segmento de línea G.SetRenderingHint (renderinghints.key_interpolation, renderinghints.value_interpolation_bilineal); G.DrawImage (srcimg.getScaledInstance (srcimg.getWidth (null), srcimg .getheight (null), image.scale_smooth), 0, 0, null); if (null! = grado) {// establece la rotación de la marca de agua g.rotate (math.toradians (grado), (doble) buffimg.getwidth () / 2, (doble) buffimg .getheight () / 2); } // La ruta de la imagen de la marca de agua es generalmente GIF o PNG, de modo que la transparencia se puede configurar Imageicon imgicon = new Imageicon (IconPath); // Obtener el objeto de imagen. Imagen img = imgicon.getImage (); flotante alfa = 0.5f; // Transparencia G.SetComposite (AlphacompositE.getInstance (alfacomposis.src_atop, alfa)); // indica la ubicación de la imagen de la marca de agua G.Drawimage (IMG, 150, 300, NULL); G.SetComposite (alfacomposis.getInstance (alfacomposis.src_over)); G.Dispose (); OS = nuevo FileOutputStream (TargerPath); // Generar Image ImageIO.Write (Buffimg, "JPG", OS); System.out.println ("Imagen terminado de agregar el sello del icono ..."); } catch (Exception e) {E.PrintStackTrace (); } finalmente {try {if (null! = os) os.close (); } catch (Exception e) {E.PrintStackTrace (); }}}}Déjame compartir con ustedes otro ejemplo:
import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.image; import java.awt.image.bufferedImage; import java.io.file; import java.io.fileOutputStream; import javax.image.imageio; import com.sun.image.codec.jpeg.jpegcodec; import com.sun.image.codec.jpeg.jpegimageEncoder; Public Final Class imageUtils {public imageUtils () {}/** * public Final static string getPressimgPath () {return ApplicationContext * .getRealPath ("/Template/data/util/shuiyin.gif"); } */ /** * Print the image on the image* * @param pressImg -- * Watermark file* @param targetImg -- * Target file* @param x * --x coordinates* @param y * --y coordinates*/ public final static void pressImage(String pressImg, String targetImg, int x, int y) { try { //Target file File _file = new File(targetImg); Imagen src = imageIO.read (_file); int wideth = src.getWidth (nulo); int hight = src.getheight (nulo); Bufferedimage imagen = nueva bufferedimage (ancho, altura, bufferedimage.type_int_rgb); Gráficos g = image.createGraphics (); G.DrawImage (Src, 0, 0, ancho, altura, nulo); // archivo de archivo de marca de agua _fileBiao = nuevo archivo (pressImg); Imagen src_biao = imageIO.read (_fileBiao); int wideth_biao = src_biao.getWidth (null); int hight_biao = src_biao.getheight (nulo); G.DrawImage (src_biao, (wideth - wideth_biao) / 2, (altura - altura_biao) / 2, wideth_biao, altura_biao, nulo); // Fin del archivo de marca de agua G.Dispose (); FileOutputStream out = new FileOutputStream (TargetImg); JpegimageEncoder coder = jpegcodec.createjpegencoder (out); encoder.encode (imagen); out.close (); } catch (Exception e) {E.PrintStackTrace (); }} / ** * Imprima la imagen de marca de agua de texto * * @param pressText * - -text * @param TargetImg - * Imagen de Target * @param FontName - * Nombre de la fuente * @param fontstyle - * font style * @param color - * font color * @param fontsize - * size de font * @param x - * ofensiva * @param y * pública static static static static static static static statsytt TargetImg, String FontName, int fontStyle, int color, int fontSize, int x, int y) {try {file _file = new File (TargetImg); Imagen src = imageIO.read (_file); int wideth = src.getWidth (nulo); int hight = src.getheight (nulo); Bufferedimage imagen = nueva bufferedimage (ancho, altura, bufferedimage.type_int_rgb); Gráficos g = image.createGraphics (); G.DrawImage (Src, 0, 0, ancho, altura, nulo); G.SetColor (Color.Red); G.SetFont (nueva fuente (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); encoder.encode (imagen); out.close (); } catch (Exception e) {System.out.println (e); }} public static void main (string [] args) {pressImage ("f: /logo.png", "f: /123.jpg", 0, 0, 0); }}Espero que este artículo sea útil para que todos usen el lenguaje Java para agregar marcas de agua a las imágenes.