类似傻瓜救笨蛋讲了什么?故事剧情深度解析!

类似傻瓜救笨蛋

说起来有点不好意思,这个题目“类似傻瓜救笨蛋”是我自己给自己项目起的外号,因为我总是觉得自己像个笨蛋,然后想用一些“傻瓜式”的方法来解决遇到的问题。这回就说说我最近折腾的一个小项目,关于批量处理图片的。

事情是这样的,我平时喜欢拍点照片,但是拍完之后经常要进行一些简单的处理,比如批量调整大小、加水印什么的。以前都是一张张手动处理,简直要命。后来我就想,能不能自己写个小工具,一键搞定?

说干就干,我寻思着这玩意儿肯定得用Python,毕竟库多嘛

我得把要处理的图片都找出来。我用了 `os` 模块,直接遍历文件夹。

python

import os

def find_images(folder):

images = []

for filename in *(folder):

if *(('.jpg', '.jpeg', '.png', '.gif')):

*(*(folder, filename))

return images

这段代码很简单,就是找到指定文件夹下所有以 `.jpg`, `.jpeg`, `.png`, `.gif` 结尾的文件,然后把它们的完整路径放到一个列表里。

找到了图片,下一步就是调整大小。这里我用了 `PIL` 库(也就是 `Pillow`)。

python

from PIL import Image

def resize_image(image_path, width, height):

try:

img = *(image_path)

img = *((width, height))

*(image_path) # 直接覆盖原图,懒得改名了

print(f"成功调整大小:{image_path}")

except Exception as e:

print(f"调整大小失败:{image_path}, 错误:{e}")

这段代码打开图片,然后用 `resize` 函数调整大小,再保存回去。这里我直接覆盖了原图,省事!正规的做法应该备份或者另存为新文件。

接下来是加水印。水印图片我事先准备好了一个 `.png` 文件。

python

def add_watermark(image_path, watermark_path, opacity=0.5):

try:

img = *(image_path).convert("RGBA")

watermark = *(watermark_path).convert("RGBA")

# 调整水印大小,让它占图片的1/4

watermark_width = int(*[0] / 4)

watermark_height = int(*[1] / 4)

watermark = *((watermark_width, watermark_height))

# 设置水印透明度

watermark = *(lambda p: p opacity)

# 计算水印位置,放在右下角

position = (*[0] - *[0], *[1] - *[1])

# 叠加水印

*(watermark, position, watermark)

*(image_path) # 同样直接覆盖

print(f"成功添加水印:{image_path}")

except Exception as e:

print(f"添加水印失败:{image_path}, 错误:{e}")

这段代码稍微复杂一点,打开原图和水印图,都转成RGBA格式,方便处理透明度。然后我把水印缩放到原图的1/4大小,设置透明度,再把水印放到右下角,叠加到原图上。

我把这些功能串起来,写一个主函数。

python

def main(folder, watermark_path, width, height):

images = find_images(folder)

for image in images:

resize_image(image, width, height)

add_watermark(image, watermark_path)

这个 `main` 函数接收文件夹路径、水印路径、宽度和高度作为参数,然后调用前面的函数,批量处理图片。

完事儿!虽然代码很简陋,但是用起来是真的方便。以后再也不用一张张手动处理图片了。

  • 第一步:用 `os` 模块找到所有图片。
  • 第二步:用 `PIL` 库调整图片大小。
  • 第三步:用 `PIL` 库添加水印。
  • 第四步:把所有步骤串起来。

这个小工具还有很多可以改进的地方,比如:

  • 可以加个GUI界面,用起来更方便。
  • 可以添加更多图片处理功能,比如裁剪、滤镜等等。
  • 可以把处理后的图片保存到新的文件夹,而不是直接覆盖原图。

不过对于我这个“笨蛋”来说,能做出这么一个“傻瓜式”的小工具,已经很满足了!哈哈!下次再分享其他折腾的小玩意儿。