图片上传
最近因为要写很多旅行的博客,这里涉及到很多图片的处理。
因为手机照片都是在手机或者nas里, 但是我也博客一般都是使用电脑的,而且网页中的图片也不能放原图,首先是太大,另外一个问题是现在手机拍照很多都是heif这种高压缩比格式,但是浏览器中还不能直接显示,需要进行转换。最后一个问题是gps信息,现在手机拍照的时候都带了这个信息,但是放到公网上还是希望去除掉这个信息。
本来都是用微信上传自己的压缩功能,虽然这个功能用起来很方便,但是却无法控制压缩率,也无法控制大小。实际情况就导致我之前在景迈山拍的云海和日出都出现了异常。而通常微信的压缩率都比较高,下面是一个对比,它压缩后的像素更高,但是大小小了一半多,但是肉眼观感的细节上就明显有问题。看来微信压缩率在这种渐变的颜色中为了压缩率会做很多的优化。导致我们看到的这个光是一圈一圈的。
![]() |
微信压缩的,压缩后大小是57.7K,图片大小是1542x1279 像素 |
|---|---|
![]() |
我自己压缩的,压缩后大小是136.2K,图片大小是1301x1080 像素 |
Linux下就用gimp来进行处理的,但是这个软件还是太大了。因为自己需求相对比较简单,别的杂七杂八的软件好像也比较难适配。
因此那就用trae来写一个了。
- 支持批量上传
- 支持jpg,png,heic,heif,webp格式都转成jpg格式,毕竟jpg是现在都支持的,png又比较大。
- 处理完成后显示下载链接,可以一键复制。
- 只支持上传的ip来进行下载,防止恶意分享
- 文件处理完成后1分钟后删除,保证磁盘空间。
代码都放在了github上了,
https://github.com/timoseven/photo-convert
不过服务器上需要安装ffmpeg和heif-convert这2个工具,本来想用ffmpeg来转换heif格式的,但是发现这种格式用ffmpeg来转会比较复杂。一个是需要使用ffmpeg需要使用7.0以上的版本,另外一个是需要懂heif格式里的stream group
https://zhuanlan.zhihu.com/p/1967617004434337986
这个还是等ffmpeg 8.1 发布再说了。
这个时候就只能用heif-convert, 这个在rocky8上需要安装libheif-devel-1.7.0-2.el8.x86_64 和 libheif-1.7.0-2.el8.x86_64这2个包。
所以上面那个python程序就需要判断heif和jpg这些不同格式的转换。
最后就很快搞定了。
https://tools.timoq.com/photo/ 大家也可以来这里进行体验。
不过这种工具其实放内网更好,速度也快,不过公网也放一个吧,万一呢。

