java代码绘制生成图片,基于imageio

简介: java代码绘制生成图片(用于多张图片合成)

java代码绘制生成图片(用于多张图片合成)

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;


public class ImageService {

    public String background_img;

    public String qrcode_img;

    public String gzh_img;
    
    public String outputdir;
    
    
    public File createImage(String name) {
        return overlapImage(background_img, gzh_img,qrcode_img, name, outputdir);
    }
    
    public File overlapImage(String backgroundPath, String gzhPath, String qrCodePath, String text, String outPutPath) {
        try {
            // 设置图片大小
             //设置图片大小
            BufferedImage background = resizeImage(848,1018, ImageIO.read(new File(backgroundPath)));
            BufferedImage qrCode = resizeImage(80,80,ImageIO.read(new File(qrCodePath)));
            BufferedImage gzh = resizeImage(80,80,ImageIO.read(new File(gzhPath)));
            Graphics2D g = background.createGraphics();
            g.setColor(Color.black);
            g.setFont(new Font("微软雅黑",Font.PLAIN,40));
            g.drawString(text,436 ,630);
            //在背景图片上添加二维码图片
            g.drawImage(qrCode, 760, 920, qrCode.getWidth(), qrCode.getHeight(), null);
            g.drawImage(gzh, 660, 920, gzh.getWidth(), gzh.getHeight(), null);
            g.dispose();
            File out = new File(outPutPath + System.currentTimeMillis()+".jpg");
            ImageIO.write(background, "jpg", out);
            return out;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static BufferedImage resizeImage(int x, int y, BufferedImage bfi) {
        BufferedImage bufferedImage = new BufferedImage(x, y, BufferedImage.TYPE_INT_RGB);
        bufferedImage.getGraphics().drawImage(bfi.getScaledInstance(x, y, Image.SCALE_SMOOTH), 0, 0, null);
        return bufferedImage;
    }

}
相关文章
|
21小时前
|
存储 安全 Java
JAVA反射技术:让你像“黑客”一样操控代码
【7月更文挑战第1天】JAVA反射技术让开发者能动态操控代码,如在运行时检查类、接口、字段和方法,以及动态创建对象。在一个企业级应用案例中,通过反射,实现了动态加载和卸载请求处理模块,避免了传统方式下需重启应用的不便。`ReflectionBasedDispatcher`类使用反射注册并管理`RequestHandler`实现类,提高了代码灵活性和应对变化的能力,展现了反射技术的强大和实用性。
|
21小时前
|
安全 Java 数据安全/隐私保护
JAVA反射:你的代码“活”了吗?
【7月更文挑战第1天】Java反射是运行时动态代码操作,允许访问和修改类、属性及方法。它提供动态加载类、按需调用方法、修改私有属性及创建泛型实例的能力。使用反射需注意性能损耗、安全风险和代码可读性降低。示例展示了通过`Class.forName()`加载类,`getDeclaredConstructor().newInstance()`创建对象,`getMethod().invoke()`调用方法的过程。在性能敏感和安全关键的项目中使用时需谨慎。
|
23小时前
|
存储 SQL 安全
提升Java代码安全性的建议
提升Java代码安全性的建议
|
1天前
|
Java 索引
Java实现扑克牌游戏 | 随机发牌 ( 过程拆分详解+完整代码 )
Java实现扑克牌游戏 | 随机发牌 ( 过程拆分详解+完整代码 )
|
1天前
|
XML 小程序 Java
java小程序代码详细展示
java小程序代码详细展示
|
2天前
|
Java 数据库连接
惊呆了!JAVA反射:你的代码竟然能这样“自我修复”?
【6月更文挑战第30天】Java反射允许运行时访问类和方法,模拟“自我修复”能力。当UserService的getUserById方法抛出异常时,通过反射捕获异常并调用handleException进行处理。此示例展示了如何记录错误,返回默认用户对象,而无需原始代码更改。反射提供了一种动态异常处理机制,增强代码的适应性和弹性。
|
3天前
|
Java Spring
JAVA注解:传统与现代的完美结合,你的代码值得拥有!
【6月更文挑战第29天】Java注解,作为连接传统与现代的编程工具,简化企业级应用开发,提升代码可读性和维护性。通过自定义注解如`@Loggable`,可以将行为(如日志记录)与方法实现分离,减少模板代码。使用AOP(如Spring)处理注解,实现行为拦截,增强代码灵活性和可扩展性。拥抱Java注解,让代码更现代、更高效!
28 16
|
3天前
|
IDE Java 数据库连接
JAVA注解:元数据,代码的“身份证”?!
【6月更文挑战第29天】Java注解,作为代码的“身份证”,提供元数据,用于编译时检查、自动生成代码和框架集成。例如,@Override确保方法重写正确,@Deprecated标记过时,@Autowired在Spring中实现依赖注入。Lombok的@Getter/@Setter简化getter/setter。注解提升代码质量和效率,是现代Java开发的关键实践。
7 0
|
3天前
|
IDE Java 编译器
JAVA注解,你的代码需要的一次“心灵按摩”!
【6月更文挑战第29天】Java注解是提升代码可维护性的关键,它们是编译器和IDE理解代码意图的特殊标记,不同于仅作解释的注释。注解可用于编译时检查(如@Override、@NotNull)、自动生成代码(Lombok的@Getter、@Setter)、框架集成(Spring的@Autowired、MyBatis的@Mapper)。通过注解,代码变得更简洁、功能更强大,为项目带来效率提升。尝试使用注解,赋予代码新生命!
21 12
|
3天前
|
IDE Java 数据库连接
JAVA注解:那些年,我们错过的代码元数据!
【6月更文挑战第29天】Java注解,非执行代码的元数据,常被误解为注释。其实,它们支持编译时检查(如@Override)、自动生成代码、依赖注入(如Spring)和ORM映射(如Hibernate)。通过自定义注解,如示例中的`@MyAnnotation`,可在运行时通过反射增强方法功能。别再错过注解的力量,让它们提升代码的灵活性和可维护性!
9 0