Image tool, image watermark, text watermark, zoom, fill white, etc.

Source: Internet
Author: User

Image tool, image watermark, text watermark, zoom, fill white, etc.

 

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. */public final class ImageUtils {/** image format: JPG */ Private static final String PICTRUE_FORMATE_JPG = "jpg"; private ImageUtils () {}/*** add image watermark * @ param targetImg target image path, for example: 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 of the line * @ 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 = widthDiff;} if (y <0) {y = heightDiff/2;} else if (y> heightDiff) {y = heightDiff ;} g. dr AwImage (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, such as: * @ param fontStyle Font style, such as: bold and italic (Font. BOLD | Font. ITALIC) * @ param fontSize font size, in pixels * @ param Color font color * @ param x the offset between the watermark text and the left side of the target image. If x is <0, the offset between the watermark text and the top side of the target image * @ param y, if y is <0, the * @ 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 {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); g. setFont (new Font (fontName, fontStyle, fontSize); g. setColor (color); g. setComposite (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. dispose (); ImageIO. write (bufferedImage, PICTRUE_FORMATE_JPG, file);} catch (Exception e ){ E. printStackTrace () ;}}/*** get the length of a character. One Chinese character serves as one character, and one English letter serves as 0.5 characters * @ param text * @ return, for example: text = "China", returns 2; text = "test", returns 2; text = "China ABC", returns 4. */public static int getLength (String text) {int textLength = text. length (); int length = textLength; for (int I = 0; I <textLength; 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. g EtHeight ()> 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 BufferedIma Ge (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 g. drawImage (itemp, (width-itemp. getWidth (null)/2, 0, itemp. getWidth (null), itemp. getHe Ight (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 {// Add a text watermark // pressText ("D:/1.jpg"," test ", "", Font. BOLD, 24, Color. red, 50, 50, 0.3f); // resize the image ("D:/1.jpg", 100,600, false); System. out. println ("processed! ");}}

 

Related Article

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.