linux 批量将 webp 转换为 jpg

背景

自己的blog有一些图片是转载的其他的blog的,有些blog的文章比较奇怪,没有后缀名!通过上一篇的方式,我找出了这种图格式是 webp。这一篇在之前的基础上,我完成了一个脚本将webp批量转换为 jpg 图片格式。

脚本下载地址:https://gist.github.com/kelvinblood/0350f50be92ccbd5036ded07980653ea

WebP是什么

目前对于JPEG、PNG、GIF等常用图片格式的优化已几乎达到极致,因此Google于2010年提出了一种新的图片压缩格式 — WebP,给图片的优化提供了新的可能。

WebP为网络图片提供了无损和有损压缩能力,同时在有损条件下支持透明通道。据官方实验显示:无损WebP相比PNG减少26%大小;有损WebP在相同的SSIM(Structural Similarity Index,结构相似性)下相比JPEG减少25%~34%的大小;有损WebP也支持透明通道,大小通常约为对应PNG的1/3。

同时,谷歌于2014年提出了动态WebP,拓展WebP使其支持动图能力。动态WebP相比GIF支持更丰富的色彩,并且也占用更小空间,更适应移动网络的动图播放。

WebP 的优势体现在它具有更优的图像数据压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量;同时具备了无损和有损的压缩模式、Alpha 透明以及动画的特性,在 JPEG 和 PNG 上的转化效果都相当优秀、稳定和统一。

转换

参考文档:Linux: How to Convert WEBP to JPG

By Xah Lee. Date: 2016-10-11.

安装

# debian install webp
sudo apt-get install webp

安装后得到如下命令工具:

  • cwebp → WebP encoder tool
  • dwebp → WebP decoder tool
  • vwebp → WebP file viewer
  • webpmux → WebP muxing tool
  • gif2webp → Tool for converting GIF images to WebP

WebP -> JPG

先使用 dwebp 将 webp 转化为png格式。


linux 判断图片格式

背景

自己的blog有一些图片是转载的其他的blog的,有些blog的文章比较奇怪,没有后缀名!这种图片在电脑浏览器显示无压力,但是到了手机上往往无法显示。于是这一篇介绍linux下如何识别图片格式。下一篇介绍如何批量转换图片格式。

知识点

文件头

文件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分。

当文件都使用二进制流作为传输时,需要制定一套规范,用来区分该文件到底是什么类型的。 文件头有很多个,这里就介绍几个跟图片相关的文件头。

  • JPEG (jpg),文件头:FFD8FF
  • PNG (png),文件头:89504E47
  • GIF (gif),文件头:47494638
  • RAR Archive (rar),文件头:52617221
  • WebP : 524946462A73010057454250

写脚本

针对这些文件头,写了这个脚本进行判断:

#!/bin/bash

if [ $# != 1 ]; then
  echo "parameter error"
else
  len3=`xxd -p -l 3 $1`
  len4=`xxd -p -l 4 $1`

  if [ $len3 == "ffd8ff" ]; then
    echo "The type is jpg"
  elif [ $len4 == "89504e47" ]; then
    echo "The type is png"
  elif [ $len4 == "47494638" ]; then
    echo "The type is gif"
  elif [ $len4 == "52494646" ]; then
    echo "The type is webp"
  elif [ $len4 == "52617221" ]; then
    echo "The type is rar"
  else
    echo "The type is others"
    echo $len4
  fi

fi

运行后即可查看图片格式,例如:

./judgeImage.sh amadeus2.gif
The type is gif

Windows 局域网互传 - 知乎

来自Pjer 的答案。最近在局域网交换文件用到的。

最方便快捷的同时快速的方案应该是【windows 局域网共享】

img

我之前也是苦于寻找一种PC之间大文件快速交换的解决方案,因为实验室的笔记本和主机都是有生产力电脑,所以需要经常传文件,而且经常很大,移动硬盘拷贝写入大概80M/s读取稍快一些综合起来USB3.0不计插拔时间平均大概是45M/s其实已经很棒了,但是移动硬盘是用来备份的经常高强度读写很容易GG

如果恰好有个像样点的路由器【某宝上随便找个“千兆”路由器都成】两台电脑都在插路由器上,似乎在平常的办公环境下这个条件很好满足),然后都打开局域网共享

具体路径是: Control Panel>Network and Internet>Network and Sharing Center>Advanced sharing settings

img

像这样

然后在文件管理器侧边栏里:

img

的NetWork目录下可以相互找到,如果觉得不安全的话设个授权就成。然后可以像访问本底目录一样访问另一台电脑目录,而且文件是可以打开的,电影可以播放,文档可以编辑,贼方便。

img

传送大文件的话速度取决于路由器带宽决定,因为是内网直传,硬盘允许的情况下可以打满带宽,比如说:

img


Mac 更改默认的截图文件格式 - 少数派

我属于对截图格式不敏感的那部分人。然而 png 格式对于我这种写 blog 的人来说,还是太大了,所以转载了这篇做个备忘。原文地址为:https://sspai.com/post/26321,以下是原文:

我在 之前一篇文章 详细地讲解了如何在 OS X 上玩转截图,尤其是使用快捷键组合,方便至极。要知道,Mac OS X 默认的截图文件格式为「.png」。这一格式非常棒,图片质量非常高,还可以包含透明背景,但是往往这一格式的图片文件相对于其他常见的图片文件格式来说,体积有点大。

虽然你可以利用 Mac 自带的「预览」应用程序或第三方的图像编辑应用程序将「.png」格式图片转换为「.jpg」等格式图片,但是我觉得还是繁琐了点,能不能直接改变截图生成的图片文件格式呢?

注: OS X 默认识别以下图片格式:「.jpg」「.gif」「.pdf」「.png」和「.tiff」,所以你可以设置截图文件格式为上述 5 种。

想要改变 Mac OS X 默认的截图文件格式,我们需要使用到「终端」应用程序。 步骤非常简单,只需要打开「终端」,然后在窗口中输入相关命令,按下「回车」键即可。

1. 设置截图文件的格式为「.jpg」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type jpg;killall SystemUIServer

2. 设置截图文件的格式为「.gif」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type gif;killall SystemUIServer

3. 设置截图文件的格式为「.pdf」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type PDF;killall SystemUIServer

4. 设置截图文件的格式为「.png」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type png;killall SystemUIServer

5. 设置截图文件的格式为「.tiff」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type tiff;killall SystemUIServer