Java 图片压缩处理求助 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiaojianbang
V2EX    Java

Java 图片压缩处理求助

  •  1
     
  •   xiaojianbang 2019-07-03 14:03:59 +08:00 4337 次点击
    这是一个创建于 2316 天前的主题,其中的信息可能已经有所发展或是发生改变。
    接到个需求,门户网站有大量的图片展示,对于一张图片规格上传到服务器,需要对图片进行多种格式大小转换。我搜了下使用 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     Solana     3542 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 04:20 PVG 12:20 LAX 20:20 JFK 23:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86