加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用ImageIO.write()创建JPEG创建一个0字节的文件

发布时间:2020-12-14 19:35:40 所属栏目:Java 来源:网络整理
导读:我正在尝试编写一个拍摄图像的方法,并保存该图像的100 x 100缩略图.但是,当我保存文件时,它是一个不可读的0字节图像(错误解释“错误解释JPEG图像文件(在状态200中对JPEG库的错误调用)”)在Ubuntu的 ImageViewer中.我的代码如下: public boolean scale(){ St
我正在尝试编写一个拍摄图像的方法,并保存该图像的100 x 100缩略图.但是,当我保存文件时,它是一个不可读的0字节图像(错误解释“错误解释JPEG图像文件(在状态200中对JPEG库的错误调用)”)在Ubuntu的 ImageViewer中.我的代码如下:
public boolean scale(){

    String file = filename.substring(filename.lastIndexOf(File.separator)+1);
    File out = new File("data"+File.separator+"thumbnails"+File.separator+file);

    if( out.exists() ) return false;

    BufferedImage bi;
    try{
        bi = ImageIO.read(new File(filename));
    }
    catch(IOException e){
        return false;
    }

    Dimension imgSize = new Dimension(bi.getWidth(),bi.getHeight());
    Dimension bounds = new Dimension(100,100);
    int newHeight = imgSize.height;
    int newWidth = imgSize.width;

    if( imgSize.width > bounds.width ){
        newWidth = bounds.width;
        newHeight = (newWidth*imgSize.height)/imgSize.width;
    }

    if( imgSize.height > bounds.width ){
        newHeight = bounds.height;
        newWidth = (newHeight*imgSize.width)/imgSize.height;
    }

    Image img = bi.getScaledInstance(newWidth,newHeight,BufferedImage.SCALE_SMOOTH);
    BufferedImage thumb = new BufferedImage(newWidth,BufferedImage.TYPE_4BYTE_ABGR);
    Graphics2D g2d = thumb.createGraphics();
    g2d.drawImage(img,null);
    g2d.dispose();

    try{
        ImageIO.write(thumb,"jpg",out);
    }
    catch(IOException e){
        return false;
    }

    return true;
}

其中“filename”是容纳此方法的类的全局变量,表示原始图像的路径.我的主要问题是我不明白为什么我要创建一个0字节的图像.

解决方法

所以,问题是这个.我在OpenJDK工作.显然,OpenJDK没有JPEG编码器,因此在创建文件时
ImageIO.write(thumb,out);

它实际上并没有为要保存的文件创建任何内容;因此空0字节不可读文件.将ImageIO参数更改为“png”(并相应地调整新的File()扩展名)已成功使用上述代码创建了所需的图像.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读