NutzCN Logo
问答 Images.read 图片的的读取
发布于 2383天前 作者 qq_39fcc7a4 2022 次浏览 复制 上一个帖子 下一个帖子
标签:

Images.read读取 图片为什么原图是jpg格式,读出来后格式变为了png,图片所占空间大小也变大了。

22 回复

读出来的是BufferedImage对象,写到文件的时候才有格式一说,不存在读成png格式一说

 @At("/show")
    @Ok("raw")
    public BufferedImage show(@Param("..") Map map) {
        try {
            String fileId = DataTypeUtil.toNotNullString(map.get("fileId"));
            String showType = DataTypeUtil.toNotNullString(map.get("showType"));
            BufferedImage data = xtUploadFileService.show(fileId, showType);
            if (data != null) {
                return data;
            }
        } catch (Exception e) {
            logError(e);// 第一步,先打印异常,log4j记录日志
        }
        return null;
    }

可是我这里直接用BufferedImage 去接它然后返到页面上,我复制图片是png了

@Ok("raw:jpg")

支不支持读什么格式的就返回什么格式么,如果 @Ok("raw:jpg")这样写是不是无论读什么都返回jpg了?

有没有想过, BufferedImage 是不带源图信息的?

我觉得你返回byte[] 或者 File更实际

我就想读什么就原图返回什么

从哪里读的? 文件?

对从文件夹中读的一张图片

return new File
  public BufferedImage readFile(String fullName) {
        File f = new File(fullName);
        if (f.exists()) {
            return Images.read(f);
        } else {
            return null;
        }
    }

是这样做的啊

  return new File(fullName);

我这样写是有什么问题么?为什么拿不到原图了?

你要原图,那直接返回文件就是,为啥总想着转成BufferedImage

这一块是同事写的代码,我刚好有问题就debug到这里。我也不知道他为啥这样写啊

@Ok("raw:jpg")是代表无论什么格式图片都以jpg返回对吧

设置了@Ok("raw:jpg"),我测试了一下用Images.read都出来的图片高度和宽度不变,但是大小变大了

那你加个方法返回File不就好了?

大佬,是的,返回file是可以的

但是我有疑问啊,为什么Images.read读出来的照片反而变大了,是方法里面设置了图片的固定大小么

看一眼RawView源码?

BufferedImage已经不是原图,也不携带原图的压缩参数

添加回复
请先登陆
回到顶部