「java压缩上传图片」java如何压缩图片

博主:adminadmin 2023-01-15 18:48:07 400

今天给各位分享java压缩上传图片的知识,其中也会对java如何压缩图片进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java上传图片 生成缩略图,如果上传的图片尺寸比较小就压缩处理

//将图按比例缩小。

public static BufferedImage resize(BufferedImage source, int targetW, int targetH) {

// targetW,targetH分别表示目标长和宽

int type = source.getType();

BufferedImage target = null;

double sx = (double) targetW / source.getWidth();

double sy = (double) targetH / source.getHeight();

//这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放

//则将下面的if else语句注释即可

if(sxsy)

{

sx = sy;

targetW = (int)(sx * source.getWidth());

}else{

sy = sx;

targetH = (int)(sy * source.getHeight());

}

if (type == BufferedImage.TYPE_CUSTOM) { //handmade

ColorModel cm = source.getColorModel();

WritableRaster raster = cm.createCompatibleWritableRaster(targetW, targetH);

boolean alphaPremultiplied = cm.isAlphaPremultiplied();

target = new BufferedImage(cm, raster, alphaPremultiplied, null);

} else

target = new BufferedImage(targetW, targetH, type);

Graphics2D g = target.createGraphics();

//smoother than exlax:

g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY );

g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));

g.dispose();

return target;

}

public static void saveImageAsJpg (String fromFileStr,String saveToFileStr,int width,int hight)

throws Exception {

BufferedImage srcImage;

// String ex = fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length());

String imgType = "JPEG";

if (fromFileStr.toLowerCase().endsWith(".png")) {

imgType = "PNG";

}

// System.out.println(ex);

File saveFile=new File(saveToFileStr);

File fromFile=new File(fromFileStr);

srcImage = ImageIO.read(fromFile);

if(width 0 || hight 0)

{

srcImage = resize(srcImage, width, hight);

}

ImageIO.write(srcImage, imgType, saveFile);

}

public static void main (String argv[]) {

try{

//参数1(from),参数2(to),参数3(宽),参数4(高)

saveImageAsJpg("C:\\Documents and Settings\\xugang\\桌面\\tmr-06.jpg",

"C:\\Documents and Settings\\xugang\\桌面\\2.jpg",

120,120);

} catch(Exception e){

e.printStackTrace();

}

}

java图片压缩比为1

java压缩图片,按照比例进行压缩

public static void main(String[] args) {

try {

//图片所在路径

BufferedImage templateImage = ImageIO.read(new File("C:\\Users\\晏丁丁\\Pictures\\图片1.png"));

//原始图片的长度和宽度

int height = templateImage.getHeight();

int width = templateImage.getWidth();

//通过比例压缩

float scale = 0.5f;

//通过固定长度压缩

/*int doWithHeight = 100;

int dowithWidth = 300;*/

//压缩之后的长度和宽度

int doWithHeight = (int) (scale * height);

int dowithWidth = (int) (scale * width);

BufferedImage finalImage = new BufferedImage(dowithWidth, doWithHeight, BufferedImage.TYPE_INT_RGB);

finalImage.getGraphics().drawImage(templateImage.getScaledInstance(dowithWidth, doWithHeight, java.awt.Image.SCALE_SMOOTH), 0, 0, null);

//图片输出路径,以及图片名

FileOutputStream fileOutputStream = new FileOutputStream("D:/image/tupian.jpg");

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fileOutputStream);

encoder.encode(finalImage);

fileOutputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

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

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

文章知

java thumbnails压缩图片占用内存过大

缩小即可。javathumbnails压缩图片占用内存过大的解决办法:

1、打开压缩图网站,点击选择图片压缩按钮。

2、图片上传前网站默认的压缩等级是70,图片上传后会自动按照当前设置的压缩等级进行压缩,如果压缩后的大小不合要求,可再次设置图片的宽高尺寸、压缩等级等参数,宽高留空时默认按照原图尺寸进行压缩,压缩等级越小则压缩后的图片体积越小,最后点击开始压缩按钮重新压缩。

3、图片压缩后,我们就能明显的看到图片压缩后的体积缩小了很多,点击“保存图片”即可。

求助java压缩图片存储大小的方法

 可以使用Draw这个类,通过改变像素来改变存储大小,实例如下:

public static boolean compressPic(String srcFilePath, String descFilePath) throws IOException {

        File file = null;

        BufferedImage src = null;

        FileOutputStream out = null;

        ImageWriter imgWrier;

        ImageWriteParam imgWriteParams;

        // 指定写图片的方式为 jpg

        imgWrier = ImageIO.getImageWritersByFormatName("jpg").next();

        imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(

                null);

        // 要使用压缩,必须指定压缩方式为MODE_EXPLICIT

        imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);

        // 这里指定压缩的程度,参数qality是取值0~1范围内,

        imgWriteParams.setCompressionQuality((float) 1);

        imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);

        ColorModel colorModel =ImageIO.read(new File(srcFilePath)).getColorModel();// ColorModel.getRGBdefault();

        // 指定压缩时使用的色彩模式

//        imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(

//                colorModel, colorModel.createCompatibleSampleModel(16, 16)));

        imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(

                colorModel, colorModel.createCompatibleSampleModel(16, 16)));

        try {

            if (isBlank(srcFilePath)) {

                return false;

            } else {

                file = new File(srcFilePath);System.out.println(file.length());

                src = ImageIO.read(file);

                out = new FileOutputStream(descFilePath);

                imgWrier.reset();

                // 必须先指定 out值,才能调用write方法, ImageOutputStream可以通过任何

                // OutputStream构造

                imgWrier.setOutput(ImageIO.createImageOutputStream(out));

                // 调用write方法,就可以向输入流写图片

                imgWrier.write(null, new IIOImage(src, null, null),

                        imgWriteParams);

                out.flush();

                out.close();

            }

        } catch (Exception e) {

            e.printStackTrace();

            return false;

        }

        return true;

    }

public static boolean isBlank(String string) {

        if (string == null || string.length() == 0 || string.trim().equals("")) {

            return true;

        }

        return false;

    }

java压缩上传图片的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java如何压缩图片、java压缩上传图片的信息别忘了在本站进行查找喔。