批量转换,性能卓越,画质无损,一键使用。
golang 编写,默认 100 个协程并发转换。
把 exe 丢到要转换的目录,双击会自动把当前及子目录下的 webp 都递归转换。
我在 b 站下载下来的壁纸都是 webp 的,很不爽,于是开发了这个工具,分享给大家。
地址: https://github.com/Bronya0/webp-to-jpg
只编译了 windows ,go 单文件编译很方便,mac 、linux 用户可以自己编译
![]() |
1
winterbells 61 天前
之前折腾转 avif ,死活编译都有问题(缺库),后来发现下载预编译的 exe ,再写代码调用就行了😀
|
![]() |
2
yangxin0 61 天前 ![]() ffmpeg 一句话就搞定了。
|
![]() |
3
sunshower 61 天前 via Android
https://anywebp.com 这种不就挺方便的
|
4
goxxoo 61 天前
挺好 用上了
|
![]() |
5
NightFlame 61 天前
可以转 GIF 吗
|
![]() |
6
lambdaq 61 天前
> b 站下载下来的壁纸都是 webp 的,很不爽
理论上,应该 URL 里的 .webp 改成 .jpg 就行。 |
7
ExplodingFKL 61 天前 ![]() 项目不错,但 ... webp 转 jpg 倒反天罡了属于是
|
8
augustheart 61 天前
无损??
|
9
wxf666 61 天前
转换图片,不是 CPU 密集型应用吗? 100 并发转换,有啥意义吗?
另外,webp 效率,不是比 jpg 好得多吗?兼容性也不错吧。。 win8.1 能运行吗?我试了下,好像不支持? |
10
augustheart 61 天前
@wxf666 别说,还真有意义,能跑满 cpu
|
![]() |
11
qq316107934 61 天前
协程数跟着 GOMAXPROCS 走好一点吧
|
12
wxf666 61 天前
|
13
augustheart 61 天前
@wxf666 这就要问楼主了啊,大概拍脑袋定的。
反正 goroutine 便宜。 |
![]() |
14
1002xin 61 天前
我一般,直接改后缀了
|
![]() |
15
183387594 61 天前
楼主写代码很简单,但 v 友们要考虑的就比较多了。
|
![]() |
16
highFreqSurfer 61 天前
不是, 我 ffmpeg 用 bash 一个 for 的事情
|
![]() |
17
kyznever 61 天前
写一个浏览器插件吧。如果没人来的话,那我来好了
|
![]() |
18
diagnostics 61 天前
@augustheart #10 如果你不是计算机专业,请看一下 Little's law, 如果你是计算机专业,麻烦你复习一下再回复
|
19
augustheart 61 天前
webp 和 jpeg 是两种完全不同的东西,无论容器还是算法都是不同的。直接改扩展名能用只是因为某些解码器不以扩展名定类型
|
20
augustheart 61 天前
@diagnostics 麻烦你别当谜语人,打开任务管理器的性能一栏直接说我哪个地方说错了吧
|
21
x66 61 天前
find . -iname '*.webp' -exec bash -c 'ffmpeg -y -i "$1" "${1%.*}.jpg"' _ {} \;
|
22
goxxoo 61 天前 ![]() 作者好心, 你们在这秀? 不是谁都会 bash,装个 linux? 谁都知道 ffmpeg, 你在让人家下载个 ffmpeg?
|
![]() |
24
diagnostics 61 天前
@augustheart #20 我都把定律(原因)发给你了,怎么谜语人了?
再深入解释就是,CPU 密集型应用都在做计算,多开的协程、线程只会在那个空等待,不会实现并发的效果。 多出来的上下文切换反而还会增加额外的开销。所以开 100 没意义,Java 有个 API: Runtime availableProcessors() 就是处理器数量,设置成这个也能跑满 CPU 。 CPU 密集型应用,没法空出手来去干其他活 |
![]() |
25
diagnostics 61 天前
用 go 写其实麻烦点,用 python 还不需要编译(当然你可能考虑到批量性能这一点)
|
26
goxxoo 61 天前
不行, 我这很多小大姐姐都不知道, 经常问, 改名, 她们连后缀名都不知道怎么显示出来, 你让她们装个软件看图?
不是所有人都有计算机知识 |
28
goxxoo 61 天前
go 编译后的 exe 是最方便的, 比 python 方便多了,再给她们电脑上装个 py 环境?
|
![]() |
29
yafoo 61 天前
好东西,已下载
|
33
augustheart 61 天前
@diagnostics 不开协程,楼主就是一个队列逐个执行。开协程,go 就会根据系统核心数调度,本质上就是一个线程池。go 的协程不太会出现同时运行大量线程导致的开销。所以我下面也说了,反正 goroutine 便宜,下面也有人说了,为什么不设置为 GOMAXPROCS 。
我的说法,本身就是基于目前系统上已经普及多核 cpu 的现状,我不觉得我的说法有大问题。 |
34
BYDH 61 天前
@diagnostics 虽然看不懂你在说什么,但是我的实践告诉我图片编码可以并发
|
35
augustheart 61 天前
@goxxoo 好办,改一改,双击启动后弹出一个目录选择对话框,让小姐姐选择目录。至少我的观察,到这步很多小姐姐是没问题的。反正这招对我家的小/老姐姐够用了。
|
36
goxxoo 61 天前
暂时没有这反馈, 我可不想找事, 上赶着不是买卖 哈哈 她们用这还行, 都是懒狗, 能点一下的绝对不点第二下
|
37
abcysn 61 天前
我就弱问下,无损是怎么做到的? jpg 常用的都是有损压缩,编译软件保存时一般都会设置压缩率。你是通过设置一个很大的压缩率来做到无损的吗?还是用了某种无损的 jpg 格式?
|
38
BYDH 61 天前 ![]() @abcysn 当然不是无损,虽然没用过 golang ,但就这一句 jpeg.Encode(outputFile, img, nil),应该是默认参数 75 吧。作者大概没考虑过编码质量的问题,
|
![]() |
39
janeyee110 61 天前
现在主要用的这个图片转换工具,感觉蛮方便的:
https://imagestool.com/zh_CN/ |
![]() |
40
diagnostics 61 天前
@augustheart #33 不是开不开协程的问题,是 100 的问题,需要设置为 GOMAXPROCS ,协程便宜不代表可以随便滥用,都是你这种程序员的话,代码得多捞,他开 100 个,你开 100 个,加起来是多少个呢?
@BYDH 能并发,但并发数 100 和 GOMAXPROCS 相比,前者不会更高,只会更差。 |
![]() |
41
winterpotato 61 天前
你这怎么反过来了,大家都是转 webp avif 啊
|
42
augustheart 61 天前
@diagnostics 可是我只是帮楼主的作品找意义啊……
|
43
jjtang11 61 天前
协程开多了最终还是并行运行 GOMAXPROCS 个,可能是懒得查 api 怎么获取核数就直接写 100 覆盖掉绝大部分人的 cpu 线程数,反正本地小工具都是怎么简单怎么来,况且 100 个协程对于现代 cpu 来说根本不算什么
|
![]() |
44
bronyakaka OP 统一回复下,
1 、 无损是看起来无损 不是真的质量无损 2 、用 100 个协程是拍脑袋定的,而且每个人电脑情况不同所以不会设置的很高,或者说榨干性能,毕竟只是一个小工具,100 个协程影响很小 |
![]() |
45
2ako 61 天前
会有这个需求,要点名批评傻逼 QQwx ,对 webp 支持很差,还要自己手动转成 jpg 、gif 才能发
|
![]() |
46
zhiyu1998 61 天前
png 能转换不?🤔
|
47
fyq 61 天前
东西不错,可有个小问题:
有的文件虽然后缀名是 webp ,可它实际上是动画,你统统给转成 jpg 不就动图变单图了。 |
![]() |
48
wakaka 61 天前 via Android
webp 转 jpg...你这是开倒车啊
|
![]() |
49
mikewang 61 天前
看起来...无损 好吧。🤦♂️
|
![]() |
50
vsheyan 61 天前 ![]() 怎么样楼主,现场 review 的感觉还不错吧,我就知道盖楼这帮人工作不饱和哈哈哈哈哈
|
51
N5GNbi8Q47N7pJJV 60 天前
想知道楼主的这个网站用的什么程序
|
52
BUHeF254Lpd1MH06 60 天前
我进来就是来看 codereview 的,果然哈哈哈
|
![]() |
53
magicdawn 60 天前 via iPhone
我来个 node.js 的, 来 review 啊🙀
https://github.com/magicdawn/handy-img 使用 pnpx handy-img -d 文件夹 -y 支持设置压缩质量, 默认 mozjpeg q85 好像 |
![]() |
54
magicdawn 60 天前 via iPhone
@winterpotato
新的不一定最适合使用场景哦 jpeg 有最广泛的兼容性和不俗的压缩表现 一个别人做的评测 供参考 https://tsev.dev/posts/2023-11-10-should-avif-be-the-dominant-image-format/ |
![]() |
55
expy 60 天前
有损格式进一步转码是大忌。
|
56
ilylx2008 59 天前
很棒,能用上
|