package com.qxueyou.scc.sys.utils; import org.springframework.core.io.ClassPathResource; import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; /** * @author luodong * @version 1.0 * @date 2020/5/23 21:13 */ public class DrawingUtil { public static void main(String[] args) { // try { // DrawingUtil.drawImage("D:\\IDEA\\spax_alibaba\\spax_alibaba_user\\src\\main\\resources\\static\\ca1.jpg", // "D:\\IDEA\\spax_alibaba\\spax_alibaba_user\\src\\main\\resources\\static\\ca.jpg","D:\\IDEA\\spax_alibaba\\spax_alibaba_user\\src\\main\\resources\\static\\1.jpg" // ,"ÕÅÈý", // "123456", // "ÉîÛÚÊб£°²Ô±×ʸñ¿¼ÊÔ", // "123456", // "666", // "Ô²ÈÚ½ÌÓý¿¼ÊÔÖÐÐÄ£¨ÉîÛÚ£©", // "Ô²ÈÚ½ÌÓý¿¼ÊÔÖÐÐÄ£¨ÉîÛÚ£©¿¼³¡16", // "71ÇøÐ˶«ÖÚÀï´´ÒµÉçÇø3~5Â¥ÎåÂ¥502", // "µØÌú5ºÅÏßÐ˶«Õ¾D³ö¿Ú£¨ÓÒתֱÐÐ100Ã×µ½´ï½¨Éè" + // "¹¤ÒµÔ°J¶°Ð˶«ÖÚÀï´´ÒµÉçÇø£©;¼Ý³µ£ºµ¼º½" + // "£¨Ô²ÈÚ¿¼ÊÔÖÐÐÄ£©¿ÉÖ±´ï¿¼³¡¡£ÎÞÌṩ³µÎ»£¬" + // "½¨Ò鹫¹²½»Í¨³öÐС£", // "2016-02-02 9:00", // "2016-02-02 9:00", // "ÄÐ"); // } catch (Exception e) { // e.printStackTrace(); // } } /** * @param img ͼƬ·¾¶ * @param sImg СͼƬ 980x994 * @param name, ÐÕÃû * @param card, ºÅÂë * @param cname, ¿ÆÄ¿ * @param number, Ö¤ºÅ * @param ID, ×ùλ * @param sitename, ¿¼Õ¾Ãû³Æ * @param ename, ¿¼³¡Ãû³Æ * @param address, ¿¼³¡µØÖ· * @param traffic, ¿¼µã½»Í¨ * @param starttime, ¿ªÊ¼ * @param endtime ½áÊø * @param sex ÐÔ±ð * */ public static void drawImage(String img, String sImg, // String nImg, String name, String card, String cname, String number, String ID, String sitename, String ename, String address, String traffic, String starttime, String endtime, String sex, OutputStream outputStream ) throws Exception { //¶ÁÈëͼƬµ½ÄÚ´æ InputStream is = DrawingUtil.class.getClassLoader().getResourceAsStream(img); //´´½¨JPEG½âÂëÆ÷ BufferedImage bufferImg = ImageIO.read(is); // JPEGImageDecoder jpegDecoder = JPEGCodec.createJPEGDecoder(is); //»ñÈ¡»º³åÊý¾ÝÁ÷ // BufferedImage bufferImg = jpegDecoder.decodeAsBufferedImage(); //µÃµ½»­±Ê¶ÔÏó Graphics g = bufferImg.getGraphics(); /*´´½¨¸½¼ÓµÄСͼƬ¶ÔÏó*/ // ClassPathResource classP = new ClassPathResource(sImg); // ImageIcon imgIcon=new ImageIcon(classP.getURL()); // //µÃµ½Image¶ÔÏó // Image simg =imgIcon.getImage(); // //½«Ð¡Í¼Æ¬»æµ½´óͼƬÉÏ,λÖÃÐÅÏ¢:(x,y) // g.drawImage(simg,1241,433,null); //ÉèÖÃ×ÖÌåÑÕÉ« g.setColor(new Color(78,76,75));//78,76,75 //×ÖÌå¡¢×ÖÌå´óС Font f = new Font("΢ÈíÑźÚ", Font.PLAIN, 38); g.setFont(f); //ͼƬÉÏ»æÖÆ×Ö·û´®ÄÚÈÝ,λÖÃÐÅÏ¢£¨x,y£© g.drawString(name, 500,489); g.drawString(card, 500, 561); g.drawString(cname, 500,629); g.drawString(number, 500, 699); g.drawString(ID, 500, 769); g.drawString(sitename, 500,857); g.drawString(ename,500,909); // g.drawString(address, 500,979); drawText(g.getFont().getSize(),500,979,700,5,g,address); // g.drawString(traffic, 500,1157); drawText(g.getFont().getSize(),500,1080,700,5,g,traffic); g.drawString(starttime, 500, 1337); g.drawString(endtime, 500, 1405); g.drawString(sex, 1081,489); g.dispose(); // //Êä³öÐÂͼƬ // OutputStream out = new FileOutputStream(nImg); //½âÎöÄÚ´æÖеÄͼÏñÊý¾Ý // JPEGImageEncoder en = JPEGCodec.createJPEGEncoder(outputStream); // en.encode(bufferImg); ImageIO.write(bufferImg, "jpeg", outputStream); //¹Ø±ÕÁ÷ is.close(); // out.close(); } /** * ¸ù¾Ý¿í¶È×Ô¶¯»»ÐÐ * @param fontSize ×ÖÌå´óС * @param beginX ¿ªÊ¼X * @param beginY ¿ªÊ¼Y * @param imgWidth ÇøÓò¿í¶È * @param rowSpacing Ðоà * @param g »­±Ê * @param text Îı¾ */ public static void drawText(int fontSize,int beginX,int beginY,int imgWidth,int rowSpacing,Graphics g,String text){ //ÎÄ×Öµþ¼Ó,×Ô¶¯»»Ðеþ¼Ó int tempX = beginX ; int tempY = beginY ; int tempCharLen = 0;//µ¥×Ö·û³¤¶È int tempLineLen = 0;//µ¥ÐÐ×Ö·û×ܳ¤¶ÈÁÙʱ¼ÆËã StringBuffer sb = new StringBuffer(); int textMaxWidth = imgWidth - 10; for (int i = 0; i < text.length(); i++) { char tempChar = text.charAt(i); tempCharLen = g.getFontMetrics(g.getFont()).charWidth(tempChar); tempLineLen += tempCharLen; if (tempLineLen >= textMaxWidth) { //³¤¶ÈÒѾ­ÂúÒ»ÐÐ,½øÐÐÎÄ×Öµþ¼Ó g.drawString(sb.toString(), tempX, tempY); sb.delete(0, sb.length());//Çå¿ÕÄÚÈÝ,ÖØÐÂ×·¼Ó tempY += (fontSize + rowSpacing); tempLineLen = 0; } sb.append(tempChar);//×·¼Ó×Ö·û } g.drawString(sb.toString(), tempX, tempY);//×îºóµþ¼ÓÓàϵÄÎÄ×Ö } }