cr3格式怎么转换成jpg_HEIC格式是什么鬼?怎么转换成JPG?

6fe6a7c938adb39df26dc193a3e578c0.png

我在「从iPhone拷贝照片,提示设备不可达?」中写到,苹果手机的照片/视频转换功能有BUG,导致拷贝文件过程中提示设备中断。

那么将设置设置成原始格式之后

b8eb1690e7415bff051cc73e99e0c071.png

照片拷贝到Windows正常了,但是拷贝出来的照片的都是原始的HEIC文件。

幸好Windows10可以打开HEIC文件,但是Windows7以及我的一些图片处理软件还未能识别HEIC文件,怎么办?


最好就是将文件格式转换成比较通用的JPG格式吧。

谷歌一下各种软件无法八门,我们都信不过,怕被加料。我们今天用FreeBSD来进行转换。只需要一行命令!

首先,当然需要有转换工具,谷歌提示有一个heif的开源软件可以搞定这个事情。那么我们看看FreeBSD 12.0R中是否有这个软件可以安装。

root@nas:~ # pkg search heif
libheif-1.3.2_2                Libheif is an ISO/IEC 23008-12:2017 HEIF file format de- and encoder

很好!软件仓库中就有。接下来安装之

root@nas:~ # pkg install libheif
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
Checking integrity... done (0 conflicting)
The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	libheif: 1.3.2_2

Number of packages to be installed: 1

The process will require 2 MiB more space.

Proceed with this action? [y/N]: y
[1/1] Installing libheif-1.3.2_2...
[1/1] Extracting libheif-1.3.2_2: 100%

5秒钟安装完。

接下来就是转换了。我把照片放在一个NAS的HOME目录的一个临时目录下。~/heic

下面将用一行命令将所有照片转换!

[qianhu@nas ~/heic]$ ls *.HEIC | xargs -I HEIC heif-convert HEIC HEIC.jpg
File contains 1 images
Written to IMG_7195.HEIC.jpg
File contains 1 images
Written to IMG_7196.HEIC.jpg
File contains 1 images
Written to IMG_7197.HEIC.jpg
File contains 1 images
Written to IMG_7198.HEIC.jpg
File contains 1 images
Written to IMG_7199.HEIC.jpg
File contains 1 images
Written to IMG_7200.HEIC.jpg
File contains 1 images
Written to IMG_7201.HEIC.jpg
File contains 1 images
Written to IMG_7202.HEIC.jpg
File contains 1 images
Written to IMG_7203.HEIC.jpg
File contains 1 images
Written to IMG_7204.HEIC.jpg
File contains 1 images
Written to IMG_7205.HEIC.jpg
File contains 1 images
Written to IMG_7206.HEIC.jpg
File contains 1 images
Written to IMG_7207.HEIC.jpg
File contains 1 images
Written to IMG_7208.HEIC.jpg
File contains 1 images
Written to IMG_7209.HEIC.jpg

10秒钟不到任务完成!

聪明的你看了上面的那行命令,是不是不知所措?

我们来讲解一下

  • ls *.HEIC ls是list的缩写,列出来当前目录下的所有的扩展名为HEIC文件。如果只执行这个命令的话,结果如下:
[qianhu@nas ~/heic]$ ls *.HEIC
IMG_7195.HEIC	IMG_7197.HEIC	IMG_7199.HEIC	IMG_7201.HEIC	IMG_7203.HEIC	IMG_7205.HEIC	IMG_7207.HEIC	IMG_7209.HEIC
IMG_7196.HEIC	IMG_7198.HEIC	IMG_7200.HEIC	IMG_7202.HEIC	IMG_7204.HEIC	IMG_7206.HEIC	IMG_7208.HEIC
  • |这根竖线什么鬼?这个就是管道,将ls的输出,也就是上面的这些文件名,不是显示到控制台上,而是通过管道传递给下一个命令。
  • xargs呢?这是一个处理输入,并生成命令行执行的工具。
  • -I HEIC 什么意思?这个就是对于管道送来的每一个文件名,都用HEIC这个变量表示。
  • heif-convert HEIC HEIC.jpg 这个就比较好理解了,heif-convert就是将heif转成jpg的工具,两个参数,一个是输入文件名,另一个是输出文件名。在这里,HEIC就是刚才xargs替换的变量,然后我们设置输出文件名=输入文件名+.jpg

转换完成的结果如下:所有jpg都可以在Windows7中可预览

17f791e622dc187cce123b3ba18090cd.png

到这里我们就用一行命令优雅解决这个转换问题。也不用安装什么乱七八糟的程序,不怕电脑被这些程序搞鬼。

是不是很cool?


One More Thing~

上面的转换命令还有没有提升的空间?聪明的你马上想到了,上面的命令执行时,图片是一个一个进行转换,说白了只用上了CPU一个核心的威力。我们来看一下单线程的转换时间。

[bendany@nas ~/heic]$ ls *.HEIC | wc -l
     633
[bendany@nas ~/heic]$ time ls *.HEIC | xargs -I HEIC heif-convert HEIC HEIC.jpg
real	3m1.957s
user	6m52.884s
sys	0m24.938s

一共633个HEIC文件,全部转换完花时3分2秒。

接下来我们用xargs来调用多进程进行转换。使用参数-P,我的NAS有20核心40线程,所以用50个进程。

[bendany@nas ~/heic]$ time ls *.HEIC | xargs -P 50 -I HEIC heif-convert HEIC HEIC.jpg
real	0m17.910s
user	11m4.362s
sys	0m27.151s

这一次只用了18秒!相对于之前的3分2秒,182秒,大概是十分之一的时间。cool!


如果你喜欢今后能多看到类似的文章,请看完之后点赞收藏分享,这样子我就可以有动力多写一些啦~~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值