mac:将剪贴板中的tiff转成png

在这里插入图片描述
3年前因为 OmniGraffle 入坑mac,现在mac已成了主力系统,虽然这些年OmniGraffle用得很少,它的很多工作逐渐被 Sketchfigma 取代。一时兴起想要解决当年遇到的一个“小困扰”。
在使用 keynoteOmniGraffle 时插入一些图片后,文件变得非常大,诶,源图片是png的,都比较小,不应该啊~


对照测试

测试1

  • Finder 里选中一张1080p的png图片,这张图片文件大小是 2.8mb
  • 按下 ⌘+C 复制到剪贴板
  • keynote 里新建文档,按 ⌘+V 粘贴png,此时在右侧的属性面板中,选中 格式–>图像,可以看到图片是png格式的,keynote保存后的“.key”文件大小是 3.4mb
    粘贴 png

测试2

  • 使用 预览 打开刚才的png图片,按⌘+A此时图片的边缘会有黑白相间的虚线“流动”,此操作是对画面进行了框选;
  • 然后按 ⌘+C ,此时剪贴板中会有个tiff的格式的图像;
  • keynote 里新建文档,按 ⌘+V 进行粘贴,此时属性面板显示图片是tiff的,保存后".key"的文件大约是 8.9mb
    粘贴 tiff

测试3

  • 使用设计软件导出一张1080p的全透明的png,png文件大小约为 36kb
  • Finder 里选中这张png图片,按下 ⌘+C 复制到剪贴板;
  • keynote 里新建文档,按 ⌘+V 进行粘贴,此时属性面板显示图片是png的,保存后“.key”的文件大约是 375kb

测试4

  • 使用设计软件导出一张1080p的全透明的png,png文件大小约为 36kb
  • 使用 预览 打开png图片,按⌘+A,然后按 ⌘+C
  • keynote 里新建文档,按 ⌘+V 进行粘贴,此时属性面板显示图片是tiff的,保存后“.key”的文件大约是 8.6mb

测试结果

实验对比可以发现:

  • 粘贴内容是tiff时,keynote文件会变得很大;
  • 不论图像画面简单还是复杂,同尺寸的图粘贴成tiff,keynote文件大小相同;
    粗略理解,带有透明度的图片1个像素使用4byte(RGBA)文件大小,那么1080p的图片需要占用 1920x1080x4 = 8,294,400 字节,文件大小约为7.91mb,实际查看key里面的单独的tiff文件大小是8.3mb,就大差不差了。
    tiff格式文件比较复杂,在这不做过多探讨。大致理解 tiff的文件大小跟画面尺寸有关系,且图像文件不会进行压缩处理。
  • 当图片画面简单时,png有很好的压缩效果。

在mac上很多情况下,复制图片都是复制成tiff格式的,比如从浏览器“复制图片”操作都会将图片转成tiff格式,这样无形中就大大增加keynote的文件大小。


tiff 转png

那有没有办法把tiff转成png呢?
最简单的方法就是复制后,粘贴到微信聊天输入区域,此时输入区域会显示图片,选中图片然后⌘+C,这样得到的图片就是png的了。
最近发现微信会在转成png的时候会把图像缩小,碗里的饭瞬间就不香了。
经过一番研究,终于可以用脚本来解决,舒爽~

#!/bin/bash
cd ~
# create dir "Clipboard_trans"
if [ ! -d "Clipboard_trans"  ];then
  mkdir "Clipboard_trans"
fi
cd "Clipboard_trans"
mark=0

# tiff
result=$(osascript -e 'clipboard info' | grep '«class PNGf»')
if [[ "$result" != "" ]]
then
	echo -e "1.save tiff"
	osascript -e "get the clipboard as «class PNGf»" | sed "s/«data PNGf//; s/»//" | xxd -r -p > x.tiff

	echo "2.convert to png"
	sips -s format png -s formatOptions default x.tiff --out x.png

	echo "3.copy png to clipboard"
	osascript -e 'set the clipboard to (read "x.png" as «class PNGf»)'
	
	# exit shell
	exit
else
	echo "Clipboard not found tiff image."
fi

# pdf
result=$(osascript -e 'clipboard info' | grep '«class PDF »')
if [[ "$result" != "" ]]
then
	echo -e "1.save pdf"
	osascript -e "get the clipboard as «class PDF »" | sed "s/«data PDF //; s/»//" | xxd -r -p > x.pdf

	echo "2.convert to png"
	sips -s format png -s formatOptions default x.pdf --out x.png

	echo "3.copy png to clipboard"
	osascript -e 'set the clipboard to (read "x.png" as «class PNGf»)'

	# exit shell
	exit
else
	echo "Clipboard not found pdf image."
fi
echo "Nothing to do!!!"

脚本功能:
读取剪贴板,将tiff或pdf的图像转成png格式

脚本工作原理:

  • 读取剪贴板,判断是否有 tiff、pdf、png等格式的内容;
  • 如果有指定格式的内容,将剪贴板的图像保存为 tiffpdf
  • 然后使用sips命令将 tiffpdf 转成png;
  • 然后在将png内容写入剪贴板;

转换产生的临时文件,都保存在 ~/Clipboard_trans 目录下,仅保留最近一次的内容。

大致流程就是:将脚本保存为".sh"文件后,下次从浏览器复制图片后,双击下sh脚本,然后再粘贴到keynote中就可以了。
需要注意的是 sketch、figma、wps不受tiff的影响。


快速上手

sh脚本已上传到 Gitee,复制粘贴下,就能快速使用了

curl -o ~/Clipboard_trans.sh https://gitee.com/hufang360/pub/raw/master/common/utils/Clipboard_trans.sh
chmod +x ~/Clipboard_trans.sh
xattr -rd com.apple.quarantine ~/Clipboard_trans.sh
~/Clipboard_trans.sh
  • 打开 终端 粘贴上方的代码,先不要敲 Enter键;
  • 然后从浏览器里"复制图片";
  • 切换到 终端,按下 Enter 键;
  • 等执行结束 剪贴板里的图像就变成 png 格式的了;
  • 不关闭终端的情况下,按 键,会再次调出刚才的执行的命令,复制图片后,再在 终端 敲enter键就又能转换一次了。
  • 上面的脚本干了什么,大致上上面的代码是从gitee上下载脚本到本地,然后将脚本设置为可执行,最后再运行脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值