如何使用 ChatGPT 构建用于高效调整图像大小的 Python 脚本

调整图像大小是我们许多人在日常工作中面临的一项常见任务。虽然有许多工具和库可用于调整图像大小,但创建自定义解决方案通常是一种更高效、更简化的方法。但是,如果您可以利用人工智能的力量为您生成代码呢?这就是 ChatGPT 的用武之地。

ChatGPT 是一种由 OpenAI 训练的大型语言模型,可以协助处理范围广泛的自然语言处理任务。它现在能够为各种应用程序生成完整的 Python 代码,包括图像大小调整。在这篇博文中,我们将探索如何使用 ChatGPT 生成一个强大而灵活的图像大小调整 Python 脚本。如何使用 AVG Rescue CD 清除病毒和间谍软件您无需自己编写任何代码 - 相反,您只需提供一些基本输入,然后让 ChatGPT 处理其余部分。

因此,让我们通过以下提示向 ChatGPT 提供我们的要求:

“编写一个能够减小 PNG 和 JPEG 图像大小的 Python 命令行脚本。图像文件名由命令行参数提供,图像的目标大小也作为命令行参数提供(例如 -s 500kb 或 - s 2mb)。如果图像大小已经小于提供的大小,则会向用户打印一条消息并终止脚本。”

ChatGPT 立即开始生成响应,部分响应生成 Python 代码,如以下屏幕截图所示:

以下代码清单包含由 ChatGPT 生成的完整代码:

import os
import argparse
from PIL import Image

def get_image_size(image_path):
    return os.path.getsize(image_path)

def resize_image(image_path, target_size):
    image = Image.open(image_path)
    current_size = get_image_size(image_path)

    if current_size <= target_size:
        print(f"Image is already smaller than {target_size/1000:.2f} KB")
        return

    while current_size > target_size:
        width, height = image.size
        new_width, new_height = width // 2, height // 2
        if new_width == 0 or new_height == 0:
            break
        image = image.resize((new_width, new_height), resample=Image.Resampling.LANCZOS)
        print(f"New image size: {image.size}")

        new_image_path = f"{os.path.splitext(image_path)[0]}_compressed{os.path.splitext(image_path)[1]}"
        image.save(new_image_path, optimize=True, quality=85)
        current_size = get_image_size(new_image_path)

    print(f"Image successfully compressed to {get_image_size(new_image_path)/1000:.2f} KB")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Reduce the size of a PNG or JPEG image")
    parser.add_argument("image_path", type=str, help="Path to the image file")
    parser.add_argument("-s", "--size", type=str, help="Target size for the image (e.g. 500kb, 2mb)")
    args = parser.parse_args()

    target_size = int(args.size[:-2]) * 1000 if args.size.endswith("kb") else int(args.size[:-2]) * 1000000
    print(f"Target size: {target_size/1000:.2f} KB")
    resize_image(args.image_path, target_size)
  1. 该get_image_size函数以字节为单位返回图像文件的大小。

  1. 该resize_image函数将图像路径和目标大小(以字节为单位)作为参数。它使用 Pillow 库打开图像,检查图像的当前尺寸是否已经小于目标尺寸,如果是,则向用户打印一条消息并返回,不做进一步操作。否则,它将在每个维度上将图像调整为 2 倍,直到尺寸小于或等于目标尺寸。保存的新图像_compressed在文件名中带有后缀,并保留文件扩展名。和参数确保压缩图像针对网络使用进行了优化optimize=True。quality=85

  1. 该脚本使用该argparse模块来解析命令行参数。参数image_path是必需的位置参数,大小参数是可选参数,采用“500kb”或“2mb”形式的字符串,用于设置图像的目标大小。该args.size[:-2]表达式提取大小字符串的数字部分,如果大小字符串以“kb”结尾,则 if 语句将大小从千字节转换为字节,如果以“mb”结尾,则将大小从兆字节转换为字节。

  1. resize_image该脚本以图像路径和目标大小作为参数调用该函数。

Python 程序正在标记 Pillow 库和 argparse 库的使用。如果您还没有安装这些 Python 库,您需要先完成安装:

$ pip install Pillow
$ pip install argparse

来自 ChatGPT 答案的代码必须被复制并粘贴到一个新文件中,例如 resizeimage.py。

测试 Python 程序

现在我们已经准备就绪,可以在命令行上执行 Python 脚本了。因此,我们确实需要有一个可用的图像文件。在以下示例中,我们假设图像文件 img01.jpg 位于与 python 脚本相同的文件夹中。

让我们运行第一个测试并执行

$ python resizeimage.py img01.jpg -s 2mb

根据我们的要求,我们使用 -s 参数指定图像大小应减小到小于 2 兆字节。以下屏幕截图显示了执行命令时发生的情况:

图像 img01.jpg 的原始图像大小为 5.4 兆字节。Python 脚本创建一个名为 img01_compressed.jpg 的新图像文件,其大小小于 2 兆字节(1.86 兆字节)。该脚本按预期工作。

让我们指定目标大小应大于原始图像大小:

在这种情况下,用户会收到图像已经变小的消息,脚本会停止而不进行任何调整。

让我们运行另一个测试并以千字节为单位指定目标大小:

最后,我们还可以使用选项 -h 来输出使用信息:

这很好,因为我们提供给 ChatGPT 的提示中没有描述此功能。但是ChatGPT自己添加了这个非常有用的功能,进一步完善了命令行工具的实现。

结论

利用 AI 的力量生成 Python 代码是一项令人兴奋的发展,可以简化各种应用程序的开发。在这篇博文中,我们探讨了如何使用 ChatGPT 构建一个高效的图像大小调整脚本,该脚本可以自定义以满足您的特定需求。按照分步指南,您可以创建一个命令行工具,该工具可以根据用户指定的参数调整图像大小,而无需编写太多代码。

这种方法提供了强大的功能和灵活性,使其成为网络开发、数据科学和图像处理等广泛应用程序的理想选择。使用 ChatGPT 生成 Python 代码的能力只是人工智能如何彻底改变软件开发世界的一个例子,我们可以期待在未来几年看到更令人兴奋的发展。那么,为什么不立即探索 ChatGPT 的强大功能,看看它可以为您的工作带来哪些新的可能性呢?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pxr007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值