• 将图片的大小(分辨率)调整为指定的宽度和高度


    这段代码将图像文件"original.jpg"的大小调整为宽度300像素,高度200像素,并将调整后的图像保存为"resized.jpg"。您可以根据需要修改输入和输出的文件路径和名称。

    1. 方法一
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.*;
    
    public class ImageResize {
        public static byte[] resizeImage(byte[] imageData, int width, int height) throws IOException {
            ByteArrayInputStream bis = new ByteArrayInputStream(imageData);
            BufferedImage image = ImageIO.read(bis);
    
            Image resizedImage = image.getScaledInstance(width, height, Image.SCALE_SMOOTH);
    
            BufferedImage bufferedResizedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            bufferedResizedImage.getGraphics().drawImage(resizedImage, 0, 0, null);
    
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            ImageIO.write(bufferedResizedImage, "jpg", bos);
            byte[] resizedImageData = bos.toByteArray();
    
            bis.close();
            bos.close();
    
            return resizedImageData;
        }
    
        public static void main(String[] args) {
            try {
                byte[] originalImageData = Files.readAllBytes(new File("original.jpg").toPath());
                byte[] resizedImageData = resizeImage(originalImageData, 300, 200);
                Files.write(new File("resized.jpg").toPath(), resizedImageData);
                System.out.println("图片调整大小成功!");
            } catch (IOException e) {
                System.out.println("图片调整大小失败: " + e.getMessage());
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    2. 方法二
    public static byte[] resizeImage(byte[] finalImage, int width, int height) {
    	try {
             BufferedImage img = ImageIO.read(new ByteArrayInputStream(imageByte));
             //创建新图片
             BufferedImage image = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
             Graphics2D g2d = image.createGraphics();
             g2d.setColor(Color.WHITE);
             g2d.fillRect(0, 0, newWidth, newHeight);
             //g2d.drawImage(img, (newWidth - img.getWidth()) / 2, (newHeight - img.getHeight()) / 2, null);
             g2d.drawImage(img.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH), 0, 0, null);
             g2d.dispose();
             ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
             ImageIO.write(image, "jpg", byteArrayOut);
             finalImage = byteArrayOut.toByteArray();
         } catch (IOException e) {
             e.printStackTrace();
         }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    接口自动化测试实战:JMeter+Ant+Jenkins+钉钉机器人群通知完美结合
    LLM预训练之RLHF(一):RLHF及其变种
    串流直播流媒体视频发布平台功能模块和产品技术参数
    Ubuntu软件操作的相关命令
    Yolov5进阶之六目标追踪环境搭建
    python爬虫练手项目之获取某地企业名录
    ctfshow-web入门-文件上传(web166、web167)&(web168-web170)免杀绕过
    2022年深圳市促进大健康产业集群高质量发展的若干措施
    Maven 入门教程
    springboot(13):spring 过滤器和拦截器的区别
  • 原文地址:https://blog.csdn.net/qq_49641620/article/details/133239458