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 );}