关于java:82java上传图片-并压缩

34次阅读

共计 2074 个字符,预计需要花费 6 分钟才能阅读完成。


    private BufferedImage getNewImage(MultipartFile oldImage, double width, double height) throws IOException{/*srcURl 原图地址;deskURL 缩略图地址;comBase 压缩基数;scale 压缩限度 (宽 / 高) 比例 */

        ByteArrayInputStream bais = new ByteArrayInputStream(oldImage.getBytes());
        MemoryCacheImageInputStream mciis = new MemoryCacheImageInputStream(bais);
        Image src = ImageIO.read(mciis);
        double srcHeight = src.getHeight(null);
        double srcWidth = src.getWidth(null);
        double deskHeight = 0;// 缩略图高
        double deskWidth  = 0;// 缩略图宽
        if (srcWidth>srcHeight) {if (srcWidth>width) {if (width/height>srcWidth/srcHeight) {
                    deskHeight = height;
                    deskWidth = srcWidth/(srcHeight/height);
                }
                else {deskHeight = width/(srcWidth/srcHeight);
                    deskWidth = width;
                }
            }
            else {if (srcHeight>height) {
                    deskHeight = height;
                    deskWidth = srcWidth/(srcHeight/height);
                }else {
                    deskHeight=srcHeight;
                    deskWidth=srcWidth;
                }

            }

        }
        else if(srcHeight>srcWidth)
        {if (srcHeight>(height)) {if ((height)/width>srcHeight/srcWidth) {deskHeight = srcHeight/(srcWidth/width);
                    deskWidth = width;
                }else {
                    deskHeight = height;
                    deskWidth = (height)/(srcHeight/srcWidth);
                }
            }
            else {if (srcWidth>width) {deskHeight = srcHeight/(srcWidth/width);
                    deskWidth = width;
                }else {
                    deskHeight=srcHeight;
                    deskWidth=srcWidth;
                }

            }

        }
        else if (srcWidth==srcHeight) {if (width>=(height)&&srcHeight>(height)) {deskWidth=(height);
                deskHeight=(height);
            }
            else if (width<=(height)&&srcWidth>width) {
                deskWidth=width;
                deskHeight=width;
            }
            else  if (width==(height)&&srcWidth<width) {
                deskWidth=srcWidth;
                deskHeight=srcHeight;
            }
            else {
                deskHeight=srcHeight;
                deskWidth=srcWidth;
            }

        }
        BufferedImage tag = new BufferedImage((int)deskWidth,(int)deskHeight,
                BufferedImage.TYPE_3BYTE_BGR);
        tag.getGraphics().drawImage(src, 0, 0, (int)deskWidth, (int)deskHeight, null); // 绘制放大后的图
        return tag;
    }

上传的 MultipartFile

@RequestParam("picFile") MultipartFile file
String originalName = file.getOriginalFilename();
originalName = originalName.toLowerCase();
resp.setType(FilenameUtils.getExtension(originalName));

String id = DateUtils.format(new Date(),"yyyyMMddHHmmssSSS");

resp.setFileName(id + "." + resp.getType());

File path = FileUtils.getFile(imageRootDir);

FileUtils.forceMkdir(path);

File ordinalFile = FileUtils.getFile(path,resp.getFileName());

ImageIO.write(newImage, resp.getType(), ordinalFile);

正文完
 0