调整图像大小是我们许多人在日常工作中面临的一项常见任务。虽然有许多工具和库可用于调整图像大小,但创建自定义解决方案通常是一种更高效、更简化的方法。但是,如果您可以利用人工智能的力量为您生成代码呢?这就是 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 Imagedef 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")returnwhile current_size > target_size:width, height = image.sizenew_width, new_height = width // 2, height // 2if new_width == 0 or new_height == 0:breakimage = 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]) * 1000000print(f"Target size: {target_size/1000:.2f} KB")resize_image(args.image_path, target_size)
该get_image_size函数以字节为单位返回图像文件的大小。
该resize_image函数将图像路径和目标大小(以字节为单位)作为参数。它使用 Pillow 库打开图像,检查图像的当前尺寸是否已经小于目标尺寸,如果是,则向用户打印一条消息并返回,不做进一步操作。否则,它将在每个维度上将图像调整为 2 倍,直到尺寸小于或等于目标尺寸。保存的新图像_compressed在文件名中带有后缀,并保留文件扩展名。和参数确保压缩图像针对网络使用进行了优化optimize=True。quality=85
该脚本使用该argparse模块来解析命令行参数。参数image_path是必需的位置参数,大小参数是可选参数,采用“500kb”或“2mb”形式的字符串,用于设置图像的目标大小。该args.size[:-2]表达式提取大小字符串的数字部分,如果大小字符串以“kb”结尾,则 if 语句将大小从千字节转换为字节,如果以“mb”结尾,则将大小从兆字节转换为字节。
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 的强大功能,看看它可以为您的工作带来哪些新的可能性呢?
本文链接:https://my.lmcjl.com/post/7825.html
4 评论