Add watermarks + image watermarks + TEXT watermarks in Java

Source: Internet
Author: User

Watermark processing... there are two ways to add a text watermark: add an image watermark and paste the source code package com. yjf. image; import java. awt. alphaComposite; import java. awt. color; import java. awt. font; import java. awt. graphics2D; import java. awt. image; import java. awt. geom. affineTransform; import java. awt. image. affineTransformOp; import java. awt. image. bufferedImage; import java. io. file; import java. io. IOException; import javax. imageio. imageIO ;/*** Image tool class, image watermark, text watermark, zoom, fill white, etc. * @ author Carl He */public final class ImageUtils {/** image format: JPG */private static final String PICTRUE_FORMATE_JPG = "jpg"; private ImageUtils () {}/ *** add an image watermark * @ param targetImg target image path, such as: C: // myPictrue // 1.jpg * @ param waterImg watermark image path, for example, C: // myPictrue // logo.png * @ param x watermark image offset from the left side of the target image, if x is <0, the offset between the x @ param y watermark image and the top side of the target image is in the middle. If y is <0, then in the middle * @ param alpha transparency (0.0 -- 1.0, 0. 0 is completely transparent, 1.0 is completely opaque) */public final static void pressImage (String targetImg, String waterImg, int x, int y, float alpha) {try {File file = new File (targetImg); Image image = ImageIO. read (file); int width = image. getWidth (null); int height = image. getHeight (null); BufferedImage bufferedImage = new BufferedImage (width, height, BufferedImage. TYPE_INT_RGB); Graphics2D g = bufferedImage. createGraphics (); G. drawImage (image, 0, 0, width, height, null); Image waterImage = ImageIO. read (new File (waterImg); // watermark File int width_1 = waterImage. getWidth (null); int height_1 = waterImage. getHeight (null); g. setComposite (AlphaComposite. getInstance (AlphaComposite. SRC_ATOP, alpha); int widthDiff = width-width_1; int heightDiff = height-height_1; if (x <0) {x = widthDiff/2 ;} else if (x> widthDiff) {x = w IdthDiff;} if (y <0) {y = heightDiff/2;} else if (y> heightDiff) {y = heightDiff;} g. drawImage (waterImage, x, y, width_1, height_1, null); // end of the watermark file g. dispose (); ImageIO. write (bufferedImage, PICTRUE_FORMATE_JPG, file);} catch (IOException e) {e. printStackTrace () ;}/ *** Add a text watermark * @ param targetImg target image path, for example, C: // myPictrue // 1.jpg * @ param pressText watermark text, for example: china Securities Network * @ param fontName font name, for example, * @ Param fontStyle: Specifies the Font style, for example, bold or italic. BOLD | Font. ITALIC) * @ param fontSize font size, in pixels * @ param color font color * @ param x watermark text offset from the left side of the target image, if x <0, the offset between the x @ param y watermark text and the top side of the Target Image in the middle. If y is <0, the x @ param alpha transparency (0.0 -- 1.0, 0.0 is completely transparent, 1.0 is completely opaque) */public static void pressText (String targetImg, String pressText, String fontName, int fontStyle, int fontSize, Color color, int x, int y, float alpha) {try {Fil E file = new File (targetImg); Image image = ImageIO. read (file); int width = image. getWidth (null); int height = image. getHeight (null); BufferedImage bufferedImage = new BufferedImage (width, height, BufferedImage. TYPE_INT_RGB); Graphics2D g = bufferedImage. createGraphics (); g. drawImage (image, 0, 0, width, height, null); g. setFont (new Font (fontName, fontStyle, fontSize); g. setColor (color); g. setComp Osite (AlphaComposite. getInstance (AlphaComposite. SRC_ATOP, alpha); int width_1 = fontSize * getLength (pressText); int height_1 = fontSize; int widthDiff = width-width_1; int heightDiff = height-height_1; if (x <0) {x = widthDiff/2;} else if (x> widthDiff) {x = widthDiff;} if (y <0) {y = heightDiff/2;} else if (y> heightDiff) {y = heightDiff;} g. drawString (pressText, x, y + height_1); g. d Ispose (); ImageIO. write (bufferedImage, PICTRUE_FORMATE_JPG, file);} catch (Exception e) {e. printStackTrace () ;}/ ** http://www.qi788.com/info-43.html * Get the length of a character, one Chinese character as 1 character, one English letter as 0.5 characters * @ param text * @ return character length, for example: text = "China", 2; text = "test" is returned, 2; text = "China ABC" is returned, and 4 is returned. */public static int getLength (String text) {int textLength = text. length (); int length = textLength; for (int I = 0; I <te XtLength; I ++) {if (String. valueOf (text. charAt (I )). getBytes (). length> 1) {length ++;} return (length % 2 = 0 )? Length/2: length/2 + 1 ;} /*** image scaling ** @ param filePath image path * @ param height * @ param width * @ param bb ratio incorrect? */public static void resize (String filePath, int height, int width, boolean bb) {try {double ratio = 0; // zoom ratio File f = new File (filePath); BufferedImage bi = ImageIO. read (f); Image itemp = bi. getScaledInstance (width, height, BufferedImage. SCALE_SMOOTH); // calculate the ratio if (bi. getHeight ()> height) | (bi. getWidth ()> width) {if (bi. getHeight ()> bi. getWidth () {ratio = (new Integer (height )). doubleValue ()/bi. getHeight ();} else {ratio = (new Integer (width )). doubleValue ()/bi. getWidth ();} AffineTransformOp op = new AffineTransformOp (AffineTransform. getScaleInstance (ratio, ratio), null); itemp = op. filter (bi, null);} if (bb) {BufferedImage image = new BufferedImage (width, height, BufferedImage. TYPE_INT_RGB); Graphics2D g = image. createGraphics (); g. setColor (Color. white); g. fillRect (0, 0, width, height); if (width = itemp. getWidth (null) g. drawImage (itemp, 0, (height-itemp. getHeight (null)/2, itemp. getWidth (null), itemp. getHeight (null), Color. white, null); else www.2cto.com g. drawImage (itemp, (width-itemp. getWidth (null)/2, 0, itemp. getWidth (null), itemp. getHeight (null), Color. white, null); g. dispose (); itemp = image;} ImageIO. write (BufferedImage) itemp, "jpg", f);} catch (IOException e) {e. printStackTrace () ;}} public static void main (String [] args) throws IOException {pressText ("D:/yjf/myworkspace/SimilarImageSearch/images/1.jpg ", "watermark test text", "", Font. BOLD, 24, Color. red, 50, 50, 0.3f );}

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.