最新消息:

图片压缩

未分类 niuge678 295浏览 0评论

背景

当把电脑的截图上传到网上时,经常因为图片过大(比如大于 10M)导致上传失败。有一个需求是,把截取的图片压缩一下,复制到粘贴板。

第一种解决方法

点击微信里的预览,然后导出,导出时选择 HEIC,质量选最低就行,这样导出的图片可能在 100k 左右。

drawing

第二种解决方法是,使用 python 脚本

from PIL import ImageGrab
import pyperclip
from io import BytesIO

# 从剪贴板中获取图片
clipboard_image = pyperclip.paste()

# 将剪贴板中的图片转换为PIL Image对象
image = ImageGrab.grabclipboard()

if image is not None:
    # 保存图片为JPEG格式
    image.save('/tmp/1.jpg', 'jpeg')
    print('图片已保存为 /tmp/')
else:
    print('剪贴板中没有图片数据')

只要保存为 jpeg 格式,就能大幅度缩小文件的大小。

第三种解决方法

from PIL import Image
import io
import pasteboard

pb = pasteboard.Pasteboard()
pb_image = pb.get_contents(pasteboard.TIFF)
if pb_image:
  image = Image.open(io.BytesIO(pb_image))
  if image.mode == 'RGBA':
    image.load()
    new_image = Image.new('RGB', image.size, (255, 255, 255))
    new_image.paste(image, mask=image.split()[3])
    image = new_image
  data_bytes = io.BytesIO()
  image.save(data_bytes, format='JPEG', quality=90)
  data_bytes = data_bytes.getvalue()
  pb.set_contents(data=data_bytes, type=pasteboard.TIFF)
  print('Converted clipboard image to JPG.')
else:
  print('No image was copied.')

可以直接把 clipboard 里的图片,从 PNG 转成 JPG(大幅度减小体积)。是从 这里这里 看到的。

实际上,很多人遇到过这个问题,比如 v2ex 这个

对应的 alfred 已经创建出来了。用 shrink 直接触发。

转载请注明:牛哥678 » 图片压缩

与本文相关的文章

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址