全球热门:Python实现图像尺寸和格式转换处理的示例详解
(资料图片)
实现代码
# batch_handle_image.py
import argparse
import glob
import os
from PIL import Image
def main(args):
limit_shortest = int(args.limitshortest)
shortest_edge = int(args.shortestedge)
longest_edge = int(args.longestedge)
limit_width_or_height = int(args.limitwidthorheight)
limit_width = int(args.limitwidth)
limit_height = int(args.limitheight)
to_webp = int(args.towebp)
path_list = sorted(glob.glob(os.path.join(args.input, "*")))
for path in path_list:
print(path)
basename = os.path.splitext(os.path.basename(path))[0]
img = Image.open(path)
width, height = img.size
# 限制最长边或最短边
if limit_shortest == 1:
# save the smallest image which the shortest edge is shortest_edge
if width < height:
ratio = height / width
width = shortest_edge
height = int(width * ratio)
else:
ratio = width / height
height = shortest_edge
width = int(height * ratio)
elif limit_shortest == 0:
# save the smallest image which the longest edge is longest_edge
if width < height:
ratio = width / height
height = longest_edge
width = int(height * ratio)
else:
ratio = height / width
width = longest_edge
height = int(width * ratio)
# 限制宽或高
if limit_width_or_height == 0:
# 限宽
ratio = height / width
width = limit_width
height = int(width * ratio)
elif limit_width_or_height == 1:
# 限高
ratio = width / height
height = limit_height
width = int(height * ratio)
idx = 0
rlt = img.resize((int(width), int(height)), resample=Image.ANTIALIAS)
rlt = rlt.convert("RGB")
rlt.save(os.path.join(args.output, f"{basename}T{idx+1}.png"), "PNG")
if to_webp == 1:
os.makedirs(os.path.join(args.output, "to_webp"), exist_ok=True)
# 转换为 webp 格式图片
rlt.save(os.path.join(args.output, "to_webp", f"{basename}T{idx+1}.webp"), "WEBP")
if __name__ == "__main__":
"""batch modify image size, and convert to webp
"""
parser = argparse.ArgumentParser()
parser.add_argument("--input", type=str, default="datasets/MY/YT", help="Input folder")
parser.add_argument("--output", type=str, default="datasets/MY/YT_smallsize", help="Output folder")
# 是否限制最短边开关:0-限制最长边;1-限制最短边;2-不限制
parser.add_argument("--limitshortest", type=str, default="2", help="0-limit longest; 1-limit shortest; 2-not limit")
# 设置最短边数值
parser.add_argument("--shortestedge", type=str, default="500", help="shortest edge size")
# 设置最长边数值
parser.add_argument("--longestedge", type=str, default="2000", help="longest edge size")
# 是否转换 webp 格式图像开关:0-不转换;1-转换
parser.add_argument("--towebp", type=str, default="0", help="is convert to webp, 0-false, 1-true")
# 是否限制宽度或高度数值开关
parser.add_argument(
"--limitwidthorheight",
type=str,
default="2",
help="is limit width or height; 0-limit width; 1-limit height; 2-not limit")
# 限制宽度数值,高度按比例计算
parser.add_argument("--limitwidth", type=str, default="1080", help="limit width")
# 限制高度数值,宽度按比例计算
parser.add_argument("--limitheight", type=str, default="1080", help="limit height")
args = parser.parse_args()
os.makedirs(args.output, exist_ok=True)
main(args)
使用命令
# 限最长边 2000px,并将格式转换为 webp 格式 python batch_handle_image.py --input /input_image --output /output_image --limitshortest 0 --longestedge 2000 --towebp 1
到此这篇关于Python实现图像尺寸和格式转换处理的示例详解的文章就介绍到这了,更多相关Python图像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
关键词:
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?

