96编辑器旗下产品
找图
终身
ID:0
到期时间:永久
退出登录
您的位置:首页 > 百科管理 > 详情

java图片压缩框架-java压缩png图片

原创:找图网 2023-05-03 17:43:03
  • java图片压缩比为1

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

    public static void main(String[] args) {

    try {

    //图片所在路径

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

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

    int height = ();

    int width = ();

    //通过比例压缩

    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, _INT_RGB);

    ().drawImage((dowithWidth, doWithHeight, _SMOOTH), 0, 0, null);

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

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

    JPEGImageEncoder encoder = (fileOutputStream);

    (finalImage);

    ();

    } 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压缩png图片

  • 您转换的是图片的后缀名吧?您这样的方式已经把图片的信息删除了!

    您去下载一个java图片压缩器吧

    或者直接在Java下编辑代码来实习转换

    package ;

    import ;

    import ;

    import ;

    import ;

    import ;

    import ;

    import ;

    import ;

    import ;

    /**

    * 图片工具类

    * 压缩图片大小

    * @author Cyw

    * @version 1.0

    */

    public class ZIPImage {

    private File file = null;

    private String outPutFilePath;

    private String inPutFilePath;

    private String inPutFileName;

    private boolean autoBuildFileName;

    private String outPutFileName;

    private int outPutFileWidth = 100; // 默认输出图片宽

    private int outPutFileHeight = 100; // 默认输出图片高

    private static boolean isScaleZoom = true; // 是否按比例缩放

    public ZIPImage() {

    outPutFilePath = "";

    inPutFilePath = "";

    inPutFileName = "";

    autoBuildFileName = true;

    outPutFileName = "";

    }

    /**

    *

    * @param ipfp

    * 源文件夹路径

    * @param ipfn

    * 源文件名

    * @param opfp

    * 目标文件路径

    * @param opfn

    * 目标文件名

    */

    public ZIPImage(String ipfp, String ipfn, String opfp, String opfn) {

    outPutFilePath = opfp;

    inPutFilePath = ipfp;

    inPutFileName = ipfn;

    autoBuildFileName = true;

    outPutFileName = opfn;

    }

    /**

    *

    * @param ipfp

    * 源文件夹路径

    * @param ipfn

    * 源文件名

    * @param opfp

    * 目标文件路径

    * @param opfn

    * 目标文件名

    * @param aBFN

    * 是否自动生成目标文件名

    */

    public ZIPImage(String ipfp, String ipfn, String opfp, String opfn,

    boolean aBFN) {

    outPutFilePath = opfp;

    inPutFilePath = ipfp;

    inPutFileName = ipfn;

    autoBuildFileName = aBFN;

    outPutFileName = opfn;

    }

    public boolean isAutoBuildFileName() {

    return autoBuildFileName;

    }

    public void setAutoBuildFileName(boolean autoBuildFileName) {

    = autoBuildFileName;

    }

    public String getInPutFilePath() {

    return inPutFilePath;

    }

    public void setInPutFilePath(String inPutFilePath) {

    = inPutFilePath;

    }

    public String getOutPutFileName() {

    return outPutFileName;

    }

    public void setOutPutFileName(String outPutFileName) {

    = outPutFileName;

    }

    public String getOutPutFilePath() {

    return outPutFilePath;

    }

    public void setOutPutFilePath(String outPutFilePath) {

    = outPutFilePath;

    }

    public int getOutPutFileHeight() {

    return outPutFileHeight;

    }

    public void setOutPutFileHeight(int outPutFileHeight) {

    = outPutFileHeight;

    }

    public int getOutPutFileWidth() {

    return outPutFileWidth;

    }

    public void setOutPutFileWidth(int outPutFileWidth) {

    = outPutFileWidth;

    }

    public boolean isScaleZoom() {

    return isScaleZoom;

    }

    public void setScaleZoom(boolean isScaleZoom) {

    = isScaleZoom;

    }

    public String getInPutFileName() {

    return inPutFileName;

    }

    public void setInPutFileName(String inPutFileName) {

    = inPutFileName;

    }

    /**

    * 压缩图片大小

    *

    * @return boolean

    */

    public boolean compressImage() {

    boolean flag = false;

    try {

    if (().equals("")) {

    throw new NullPointerException("源文件夹路径不存在。");

    }

    if (().equals("")) {

    throw new NullPointerException("图片文件路径不存在。");

    }

    if (().equals("")) {

    throw new NullPointerException("目标文件夹路径地址为空。");

    } else {

    if (!(outPutFilePath)) {

    throw new FileNotFoundException(outPutFilePath

    + " 文件夹创建失败!");

    }

    }

    if () { // 自动生成文件名

    String tempFile[] = getFileNameAndExtName(inPutFileName);

    outPutFileName = tempFile[0] + "_cyw." + tempFile[1];

    compressPic();

    } else {

    if (().equals("")) {

    throw new NullPointerException("目标文件名为空。");

    }

    compressPic();

    }

    } catch (Exception e) {

    flag = false;

    e.printStackTrace();

    return flag;

    }

    return flag;

    }

    // 图片处理

    private void compressPic() throws Exception {

    try {

    // 获得源文件

    file = new File(inPutFilePath + inPutFileName);

    if (!()) {

    throw new FileNotFoundException(inPutFilePath + inPutFileName

    + " 文件不存在!");

    }

    Image img = (file);

    // 判断图片格式是否正确

    if ((null) == -1) {

    throw new Exception("文件不可读!");

    } else {

    int newWidth;

    int newHeight;

    // 判断是否是等比缩放

    if ( == true) {

    // 为等比缩放计算输出的图片宽度及高度

    double rate1 = ((double) (null))

    / (double) outPutFileWidth + 0.1;

    double rate2 = ((double) (null))

    / (double) outPutFileHeight + 0.1;

    // 根据缩放比率大的进行缩放控制

    double rate = rate1 > rate2 ? rate1 : rate2;

    newWidth = (int) (((double) (null)) / rate);

    newHeight = (int) (((double) (null)) / rate);

    } else {

    newWidth = outPutFileWidth; // 输出的图片宽度

    newHeight = outPutFileHeight; // 输出的图片高度

    }

    BufferedImage tag = new BufferedImage((int) newWidth,

    (int) newHeight, _INT_RGB);

    /*

    * _SMOOTH 的缩略算法 生成缩略图片的平滑度的 优先级比速度高 生成的图片质量比较好 但速度慢

    */

    ().drawImage(

    (newWidth, newHeight,

    _SMOOTH), 0, 0, null);

    FileOutputStream out = new FileOutputStream(outPutFilePath

    + outPutFileName);

    JPEGImageEncoder encoder = (out);

    (tag);

    ();

    }

    } catch (IOException ex) {

    ();

    }

    }

    /**

    * 创建文件夹目录

    *

    * @param filePath

    * @return

    * @throws Exception

    */

    @SuppressWarnings("unused")

    private static boolean mddir(String filePath) throws Exception {

    boolean flag = false;

    File f = new File(filePath);

    if (!f.exists()) {

    flag = f.mkdirs();

    } else {

    flag = true;

    }

    return flag;

    }

    /**

    * 获得文件名和扩展名

    *

    * @param fullFileName

    * @return

    * @throws Exception

    */

    private String[] getFileNameAndExtName(String fullFileName)

    throws Exception {

    String[] fileNames = new String[2];

    if ((".") == -1) {

    throw new Exception("源文件名不正确!");

    } else {

    fileNames[0] = (0, fullFileName

    .lastIndexOf("."));

    fileNames[1] = fullFileName

    .substring((".") + 1);

    }

    return fileNames;

    }

    public Image getSourceImage() throws IOException{

    //获得源文件

    file = new File(inPutFilePath + inPutFileName);

    if (!()) {

    throw new FileNotFoundException(inPutFilePath + inPutFileName

    + " 文件不存在!");

    }

    Image img = (file);

    return img;

    }

    /*

    * 获得图片大小

    * @path :图片路径

    */

    public long getPicSize(String path) {

    File file = new File(path);

    return ();

    }

    }

    //下面是测试程序

    package ;

    import ;

    import ;

    public class ImageTest {

    public static void main(String[] args) throws IOException {

    ZIPImage zip=new ZIPImage("d:\\","1.jpg","d:\\test\\","处理后的图片.jpg",false);

    (1000);

    (1000);

    Image image=();

    long size=("d:\\1.jpg");

    ("处理前的图片大小 width:"+(null));

    ("处理前的图片大小 height:"+(null));

    ("处理前的图片容量:"+ size +" bit");

    ();

    }

    }

  • java中gui界面设置背景图片怎么让图片压缩

  • java中gui界面设置背景图片文件格式转换框架完让图片压缩。一种是用Graphics+文件格式转换框架完成,这种麻烦,代码量多一些压缩出的图片质量会更好,另一种是用Google的一个开源框架thumbna。

    最新文章 更多
    最新素材 更多
    公司介绍 网站地图 图片资讯
    Copyright © 2010-2022 山东找图网络科技有限公司  鲁ICP备18007836号-3  邮箱:15653358549@163.com