为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

1 回答

@Service
public class ThumbnailService {
    public static final int WIDTH  = 100;
    public static final int HEIGHT = 100;

    //使用类库
    public String thumbnail(MultipartFile file,String uploadPath, String realUploadPath){
        String imgName = "thum_"+file.getOriginalFilename();
        String des = realUploadPath+"/"+imgName;
        try {
            Thumbnails.of(file.getInputStream()).size(WIDTH,HEIGHT).toFile(des);
        }catch (Exception e){
            e.printStackTrace();
        }
        return uploadPath+"/"+imgName;
    }

    //使用java awt
    public String awt(MultipartFile file,String uploadPath, String realUploadPath){
        OutputStream os = null;
        String imgName = "thum_"+file.getOriginalFilename();
        String des = realUploadPath+"/"+imgName;
        try {
            os = new FileOutputStream(des);
            Image image = ImageIO.read(file.getInputStream());
            int width = image.getWidth(null);//原图宽
            int height = image.getHeight(null);//原图高
            int rate1 = width/WIDTH;//缩略图宽比例
            int rate2 = height/HEIGHT;//缩略图高比例
            int rate = 0;
            if(rate1 > rate2){//宽度缩略比例大于高度缩略比例,使用宽度缩略比例
                rate = rate1;
            }else {
                rate = rate2;
            }
            //计算缩略图最终的宽度和高度
            int newWidth = width/rate;
            int newHeight = height/rate;
            BufferedImage bufferedImage = new BufferedImage(newWidth,newHeight,BufferedImage.TYPE_INT_RGB);
            bufferedImage.getGraphics().drawImage(image.getScaledInstance(newWidth,newHeight,image.SCALE_SMOOTH),0,0,null);
            String imageType = file.getContentType().substring(file.getContentType().indexOf("/")+1);
            ImageIO.write(bufferedImage,imageType,os);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(os!=null){
                try {
                    os.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
        return uploadPath+"/"+imgName;
    }
}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java实现图片等比例缩略图
  • 参与学习       25335    人
  • 解答问题       16    个

视频教程以实例的方式,讲解Java平台实现图片等比例缩略图生成

进入课程

项目源码在哪?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信