V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiaojianbang
V2EX  ›  Java

Java 图片压缩处理求助

  •  1
     
  •   xiaojianbang · 2019-07-03 14:03:59 +08:00 · 3955 次点击
    这是一个创建于 2000 天前的主题,其中的信息可能已经有所发展或是发生改变。
    接到个需求,门户网站有大量的图片展示,对于一张图片规格上传到服务器,需要对图片进行多种格式大小转换。我搜了下使用 google 的 Thumbnailator 类库进行处理,虽然能够进行图片处理,但是达不到我的要求。
    以下是我测试的例子:
    上传一张 820*546 的图片,调用 Thumbnailator 类库的方法进行指定大小处理。(压缩成 300*200 的图片)
    BufferedImage bufferedImage = Thumbnails.of(inputStream)
    .size(wide, high)
    .outputFormat(format)
    .asBufferedImage();
    最终得到的是一张 400*266 的图片。我都无语了,难道说任意大小的图片不能指定处理成要求的大小吗?
    因为下午要展示,无奈让前端限制为 300*200,请教各位是否做过类型的需求,麻烦指点下。(公司要求不使用第三方服务)最好是这种开源的类库,或者开源的解决方案。跪求。
    11 条回复    2019-07-04 10:25:13 +08:00
    xiaojianbang
        1
    xiaojianbang  
    OP
       2019-07-03 14:09:41 +08:00
    需求紧急,大佬们支支招吧
    xy2401
        2
    xy2401  
       2019-07-03 14:11:51 +08:00   ❤️ 1
    批处理第一个反应不是 命令行吗?
    我一开始以为你说 无法压缩到指定大小 2M 这样。图片尺寸 无法指定不太可能吧。是不是代码写错了?
    xiaojianbang
        3
    xiaojianbang  
    OP
       2019-07-03 14:23:40 +08:00
    @xy2401 我这个是上传一张图片,在拿到图片的 inputStream 后调用 Thumbnailator 类库,进行指定图片指定宽高处理,可以保证代码是没有问题的,因为它要的也就宽高参数,最终图片也被压缩处理了,原图为 820*546,出来的是 400*266,而我想要的是 300*200。现在纠结在是不是没有办法指定尺寸。
    maidmiku
        4
    maidmiku  
       2019-07-03 14:33:07 +08:00   ❤️ 2
    @xiaojianbang 你调用那个 size 会锁定宽高比,你试一下 forceSize(int, int) 这个方法
    limuyan44
        5
    limuyan44  
       2019-07-03 14:53:19 +08:00 via Android
    Thumbnails.of("a.jpg").size(50, 60).keepAspectRatio(false).toFile("b.jpg");
    limuyan44
        6
    limuyan44  
       2019-07-03 14:55:34 +08:00 via Android   ❤️ 1
    正好测了一下,包我是 latest 版本。
    xiaojianbang
        7
    xiaojianbang  
    OP
       2019-07-03 14:57:08 +08:00
    @maidmiku 非常感谢,forceSize 方法替代 size 成功实现需求,果然 V2EX 大佬多,见识广
    xiaojianbang
        8
    xiaojianbang  
    OP
       2019-07-03 14:58:27 +08:00
    @limuyan44 非常感谢,去除锁定可以实现。学到了。哈哈
    gz911122
        9
    gz911122  
       2019-07-03 15:07:49 +08:00   ❤️ 1
    luban 了解一下
    chinjanry
        10
    chinjanry  
       2019-07-03 15:45:59 +08:00   ❤️ 1
    这不就是我去年干过的一模一样的事么?
    原生 java 图片尺寸(按比例)、大小、质量压缩,拿走不谢:
    https://www.cnblogs.com/jsper/p/7652896.html
    xiaojianbang
        11
    xiaojianbang  
    OP
       2019-07-04 10:25:13 +08:00
    @chinjanry 谢谢,因为工期的问题暂时使用了 Thumbnailator,后面有时间我研究下原生处理
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2988 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:11 · PVG 22:11 · LAX 06:11 · JFK 09:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.