zyj1214 发表于 2024-2-5 19:53:38

怎么用python处理图片?

手机里的图片想整理一下,,怎么用python对图片进行处理,按年月日进行分类?
代码怎么写?

FishC 发表于 2024-2-5 19:54:01

使用Python处理图片可以使用PIL库(Python Imaging Library)。

首先,你需要安装PIL库。在终端或命令提示符中运行以下命令:

pip install pillow

下面是一个示例代码,用于将图片按照年月日进行分类并移动到对应的文件夹中:

from PIL import Image
import os
import shutil

# 获取图片的日期信息
def get_image_date(file_path):
    with Image.open(file_path) as img:
      info = img._getexif()
      if 36867 in info:
            date_time = info
            return date_time.split().replace(':', '-')
      else:
            return "Unknown"

# 创建目录
def create_directory(directory):
    try:
      os.makedirs(directory)
    except FileExistsError:
      pass

# 移动图片到指定目录
def move_image(file_path, directory):
    if not os.path.exists(directory):
      create_directory(directory)
    shutil.move(file_path, os.path.join(directory, os.path.basename(file_path)))

# 图片处理主函数
def process_images(source_directory, target_directory):
    for filename in os.listdir(source_directory):
      if filename.endswith(".jpg") or filename.endswith(".png"):
            file_path = os.path.join(source_directory, filename)
            date = get_image_date(file_path)
            target_path = os.path.join(target_directory, date)
            move_image(file_path, target_path)

# 设置源目录和目标目录
source_directory = "/path/to/source/directory"
target_directory = "/path/to/target/directory"

# 处理图片
process_images(source_directory, target_directory)

请替换 `source_directory` 和 `target_directory` 变量的值为你实际的目录路径。此代码将遍历 `source_directory` 中的所有图片文件,根据其拍摄日期将其移动到以日期命名的子目录中,存储在 `target_directory` 中。

这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。希望对你有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

小甲鱼的二师兄 发表于 2024-2-6 00:56:02

要使用Python对图像按照日期(年月日)进行分类,你可以考虑以下几个步骤:


[*]读取图像文件的元数据(EXIF),来获取拍摄日期
[*]根据拍摄日期创建对应的文件夹结构(例如:年/月/日)
[*]将图像移动到对应的文件夹中

你可以参考下面这段代码进行修改 DIY:

import os
import shutil
from PIL import Image
from datetime import datetime

# 图像所在目录
image_dir = '/path/to/your/images'
# 分类后图像存放的目录
sorted_dir = '/path/to/sorted/images'

# 确保分类后的目录存在
if not os.path.exists(sorted_dir):
    os.makedirs(sorted_dir)

# 遍历图像目录中的所有文件
for filename in os.listdir(image_dir):
    if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.tiff', '.bmp', '.gif')):
      # 构建完整的文件路径
      file_path = os.path.join(image_dir, filename)
      try:
            # 打开图像文件
            with Image.open(file_path) as img:
                # 从图像文件中获取EXIF信息
                exif_data = img._getexif()
                # 找到日期时间的EXIF标签
                date_time_original = exif_data.get(36867)
                if date_time_original:
                  # 解析日期时间字符串
                  date_taken = datetime.strptime(date_time_original, '%Y:%m:%d %H:%M:%S')
                  # 构建日期目录结构(年/月/日)
                  date_folder = os.path.join(sorted_dir, str(date_taken.year), str(date_taken.month).zfill(2), str(date_taken.day).zfill(2))
                  # 如果日期目录不存在,则创建
                  if not os.path.exists(date_folder):
                        os.makedirs(date_folder)
                  # 移动文件到相应的日期目录
                  shutil.move(file_path, os.path.join(date_folder, filename))
                else:
                  print(f"No EXIF date information found for {filename}")
      except (IOError, KeyError, IndexError):
            print(f"处理 {filename} 时出错!")

print("搞定!")
页: [1]
查看完整版本: 怎么用python处理图片?