由于个人水平有限,实在是不能保证代码的严谨性,我只能说是可以实现功能,用来个性化小程序码logo
//生成文件名称,这个不是必须的,可以根据自己的业务逻辑来写Random random = new Random(); int rannum = (int) (random.nextDouble() * (99999 - 10000 + 1)) + 10000;SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");String newFileName = df.format(new Date())+rannum+".png"; //截取为正方形图片,长宽自定义,我自己估摸着是195,这个可以根据自己情况自己设置大小try {
//此处是要替代logo的自定义图片路径,自定义图片不要用透明的或者半透明的 BufferedImage image = ImageIO.read(new File("C:\Program Files\tomcat-huipiao\webapps\Financial\img\"+imgNameString)); //int w = image.getWidth(); //int h = image.getHeight(); BufferedImage output = new BufferedImage(195, 195, BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = output.createGraphics(); output = g2.getDeviceConfiguration().createCompatibleImage(195, 195, Transparency.TRANSLUCENT); g2.dispose(); g2 = output.createGraphics(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.fillRoundRect(0, 0,195, 195, 720, 720); g2.setComposite(AlphaComposite.SrcIn); g2.drawImage(image, 0, 0, 195, 195, null); g2.dispose();
//这是生成的临时替换logo图片的保存路径 ImageIO.write(output, "png", new File("C:\Program Files\tomcat-huipiao\webapps\Financial\img\"+newFileName)); } catch (IOException e) { e.printStackTrace(); } //生产新的二维码图片 try{
//此处是小程序码的路径 BufferedImage appletImg = ImageIO.read(new FileInputStream("C:\Program Files\tomcat-huipiao\webapps\Financial\img\"+codeNameString)); Graphics2D g2d = appletImg.createGraphics(); // 设置抗锯齿的属性 g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
//此处是替换logo的临时图片路径 BufferedImage centerImg = ImageIO.read(new File("C:\Program Files\tomcat-huipiao\webapps\Financial\img\"+newFileName)); g2d.drawImage(centerImg.getScaledInstance(centerImg.getWidth(), centerImg.getHeight(), Image.SCALE_SMOOTH), (appletImg.getWidth() - centerImg.getWidth()) / 2, (appletImg.getHeight() - centerImg.getHeight()) / 2, null); // 关闭资源 g2d.dispose(); //生成新的二维码,覆盖原来的,此处为原小程序码路径,如需另为保存,请自定义路径 ImageIO.write(appletImg, "png", new File("C:\Program Files\tomcat-huipiao\webapps\Financial\img\"+codeNameString)); }catch (Exception e){ e.printStackTrace(); } //删除生成的临时替代logo文件 new File("C:\Program Files\tomcat-huipiao\webapps\Financial\img\"+newFileName).delete();
//有啥优化意见大家可以提出