Hoy encontré la necesidad de llenar la imagen cargada con marcas de agua. Busqué en línea durante mucho tiempo y establecí la marca de agua en la ubicación especificada. El siguiente código fue transformado por el código que encontré en línea. Echemos un vistazo a la imagen del efecto primero
El método de implementación se analiza a continuación:
Paso 1: Use el software PS o Meitu para diseñar imágenes de marcas de agua, como:
Paso 2: Pon el siguiente código en la clase:
paquete org.platform.framework.commons.util; import java.awt.alphacomposition; import java.awt.color; import java.awt.font; import java.awt.graphics2d; import java.awt.image; import java.awt.renderinghints; import java.awt.image.image; java.io.file; import java.io.fileOutputStream; import java.io.inputStream; import java.io.outputStream; import javax.Imageio.Imageio; import javax.swing.imageicon; import.founder.cms.cms.util.imagemarklogoutil;/** * * * * * Generate Generado/generate { / ** transparencia de marca de agua* / private static float alfa = 0.5f; / ** Ángulo de rotación de la imagen de la marca de agua*/ Private Static Double Grado = 0f; Intervalado intemporal privado int = 0; / ** * Establezca los parámetros de la marca de agua, use el valor predeterminado sin configurar * * @param alpha * transparencia de marca de agua * @param grado * ángulo de rotación de imagen de marca de agua * * @param interval * intervalo de imagen de agua */ public static void setImageMarkOptions (flot de float alfa, intdRegal, int interval) {if (alpha! = 0.0f) {image imagarkutil. } if (grado! = 0f) {imageMarkUtil.degree = grado; } if (interval! = 0f) {imageMarkUtil.interval = interval; } } /** * 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); } / *** Agregue una imagen de marca de agua a la imagen** @param waterimgpath* ruta de imagen de marca de agua* @param srcimgpath* ruta de imagen de origen* @param targetPath* Target Image ruta* / public static void watermarkByimgg (string waterimgpath, strcimgpath 0); } Catch (Exception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } } /** * Add a watermark image to the image, and set the rotation angle of the watermark image* * @param waterImgPath * Watermark image path* @param srcImgPath * Source image path* @param targetPath * Target image path* @param degree * Watermark image rotation angle*/ public static void waterMarkByImg(String waterImgPath, String srcImgPath, String targetPath, double degree) lanza excepción {outputStream OS = null; intente {Image srcimg = imageIO.read (nuevo archivo (srcimgpath)); BufferedImage Buffimg = nueva BufferedImage (srcimg.getwidth (null), srcimg.getheight (null), bufferedimage.type_int_rgb); // 1. Obtenga los gráficos de objeto de pincel2d g = buffimg.createGraphics (); // 2. 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); // 3. Establezca la rotación de la marca de agua if (0! = Grado) {g.rotate (math.toradians (grado), (doble) buffimg.getWidth () / 2, (doble) buffimg .getheight () / 2); } // 4. La ruta de la imagen de la marca de agua La imagen de la marca de agua es generalmente GIF o PNG, de modo que la transparencia se puede configurar Imageicon imgicon = new Imageicon (WaterImGPath); // 5. Obtenga el objeto de imagen. Imagen img = imgicon.getImage (); G.SetComposite (alphacomposis.getInstance (alphacomposis.src_atop, alfa)); // 6. The location of the watermark image is for (int height = interval + imgIcon.getIconHeight(); height < buffImg .getHeight(); height = height +interval+ imgIcon.getIconHeight()) { for (int weight = interval + imgIcon.getIconWidth(); weight < buffImg .getWidth(); weight = weight +interval+ imgicon.geticonwidth ()) {g.drawimage (img, peso - imgicon.geticonwidth (), altura - imgicon.geticonheight (), nulo); }} g.setComposite (alfacomposis.getInstance (alfacomposis.src_over)); // 7. Libere el recurso G.Dispose (); // 8. Generar imagen OS = nueva FileOutputStream (TargerPath); Imageio.write (buffimg, "jpg", os); System.out.println ("Imagen terminado de agregar imagen de marca de agua"); } catch (Exception e) {E.PrintStackTrace (); } finalmente {try {if (null! = os) os.close (); } catch (Exception e) {E.PrintStackTrace (); }}} public static void main (string [] args) {System.out.println (".. Comience a agregar la imagen de la marca de agua ..."); /*** DIRECCIÓN DE IMAGEN DE MARCA DE WATERMACKPATH Dirección de archivo de carga de carga después de la carga exitosa*/// Modifique los parámetros predeterminados // imageMarkUtil.SetImageMarkOptions (0.0f, 0, 20); //Imagemarkutil.watermarkbyimg(watermarkpath, uploadPath); System.out.println (".. Agregue la imagen de la marca de agua para finalizar ..."); }} Paso 3: donde la carga es exitosa, llame a esta clase, como:
/ *** DIRECCIÓN DE IMAGEN DE MARCA DE WATERMACKPATH* La dirección de archivo de carga de carga después de la carga exitosa*/ imageMarkUtil.watermarkByImg (WatermarkPath, uploadPath); Si cree que el intervalo de marca de agua está demasiado cerca, puede establecer el intervalo a través del siguiente código: // modificar los parámetros predeterminados ImageMarkUtil.SetImageMarkOptions (0.0f, 0, 20); ImageMarkUtil.watermarkbyimg (WaterMarkpath, uploadPath);
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.