图片的压缩与合并

 


import net.coobird.thumbnailator.Thumbnails;
import org.junit.Test;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;

/**
 * util test
 * Created by ggq on 2018/5/7 0007.
 */
public class UtilsTest {
    @Test
    public void thread() {
        System.out.println("hello world." );
    }

    @Test
    public void testRoud() {
        Double p = 0.1234567;
        System.out.println(Math.round(p * 100) * 1.0 /100);
    }
    public  void commpressPicCycle(String desPath , long desFileSize,
                                   double accuracy) throws  IOException {
        File imgFile = new File(desPath);
        long fileSize  = imgFile.length();
        //判断大小,如果小于1024K,不压缩,如果大于等于1024K,压缩
        if(fileSize <= desFileSize * 1024){
            return;
        }
        //计算宽高
        BufferedImage  bim = ImageIO.read(imgFile);
        int imgWidth = bim.getWidth();
        int imgHeight = bim.getHeight();
        int desWidth = new BigDecimal(imgWidth).multiply(
                new BigDecimal(accuracy)).intValue();
        int desHeight = new BigDecimal(imgHeight).multiply(
                new BigDecimal(accuracy)).intValue();
        Thumbnails.of(desPath).size(desWidth, desHeight).outputQuality(accuracy).toFile(desPath);
        //如果不满足要求,递归直至满足小于1M的要求
        commpressPicCycle(desPath, desFileSize, accuracy);
    }
    public void createPicTwo2(int x,int y) {
        try
        {
            //读取第一张图片
            File fileOne = new File("F:\\workspace\\AIIDENT\\01开发区\\02设计\\benchmark自动测试平台\\work\\render1.jpg");
            BufferedImage ImageOne = ImageIO.read(fileOne);
            int width = ImageOne.getWidth();//图片宽度
            int height = ImageOne.getHeight();//图片高度
            //从图片中读取RGB
            int[] ImageArrayOne = new int[width*height];
            ImageArrayOne = ImageOne.getRGB(0,0,width,height,ImageArrayOne,0,width);
            //对第二张图片做相同的处理
            File fileTwo = new File("F:\\workspace\\AIIDENT\\01开发区\\02设计\\benchmark自动测试平台\\work\\render2.jpg");
            BufferedImage ImageTwo = ImageIO.read(fileTwo);
            int widthTwo = ImageTwo.getWidth();//图片宽度
            int heightTwo = ImageTwo.getHeight();//图片高度
            int[] ImageArrayTwo = new int[widthTwo*heightTwo];
            ImageArrayTwo = ImageTwo.getRGB(0,0,widthTwo,heightTwo,ImageArrayTwo,0,widthTwo);

            int widthNew = width +  widthTwo ;
            int heightNew = Math.max(height, heightTwo);
            //生成新图片
            BufferedImage ImageNew = new BufferedImage(widthNew,heightNew,BufferedImage.TYPE_INT_RGB);
            ImageNew.setRGB(0,0,width,height,ImageArrayOne,0,width);//设置左半部分的RGB
//            ImageNew.setRGB(0,0,width,height,ImageArrayOne,0,width);//设置左半部分的RGB
            ImageNew.setRGB(width,0,widthTwo,heightTwo,ImageArrayTwo,0,widthTwo);//设置右半部分的RGB
//            ImageNew.setRGB(x*2,y,widthTwo,heightTwo,ImageArrayTwo,0,widthTwo);//设置右半部分的RGB
            File outFile = new File("F:\\workspace\\AIIDENT\\01开发区\\02设计\\benchmark自动测试平台\\work\\out.png");
            File outFile1 = new File("F:\\workspace\\AIIDENT\\01开发区\\02设计\\benchmark自动测试平台\\work\\out1.png");
            ImageIO.write(ImageNew, "png", outFile);//写图片
            commpressPicCycle(outFile.getAbsolutePath(),  1024, 0.8);

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }


    @Test
    public void testImageMerge() {
//        ImageDraw he = new ImageDraw();
        createPicTwo2(1000, 0);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值