from PIL import Image
= 'data/nejm-mechanisms of fluid and solute transport during KRT.jpeg'
inputImg = 'data/nejm-mechanisms of fluid and solute transport during KRT_crop1.jpeg'
outImg1 = 'data/nejm-mechanisms of fluid and solute transport during KRT_crop2.jpeg'
outImg2
# 打开图像文件
= Image.open(inputImg)
image
# 获取图像宽度
= image.width
width = image.height
height
# 定义裁剪区域 (left, upper, right, lower)
= image.crop((0, 0, width, height * 0.472))
cropped1
= image.crop((0, height * 0.472, width, height))
cropped2
# 保存裁剪后的图像
cropped1.save(outImg1) cropped2.save(outImg2)
13 图片编辑
13.1 裁剪
13.1.1 PIL
13.1.2 CV2
import cv2
= 'data/lancet-rrt-con-int-figure3.png'
inputImg = 'data/lancet-rrt-con-int-figure3_crop3.jpeg'
outImg
# 读取图像
= cv2.imread(inputImg)
img
# 获取图像高度和宽度
= img.shape
height, width, channels
# 定义裁剪区域的坐标和尺寸
= 0, 0, width, int(height * 0.86)
x, y, w, h
# 进行裁剪
= img[y:y+h, x:x+w]
cropped
# 保存裁剪后的图像
cv2.imwrite(outImg, cropped)
13.1.3 打包成终端执行
crop.py
文件内容如下:
import argparse
from PIL import Image
def crop_image(input_img, output_img, crop_area):
# 打开图像文件
= Image.open(input_img)
image
# 获取图像宽度和高度
= image.size
width, height
print(f"图片宽{width},高{height}")
# 计算裁剪区域的实际坐标
= int(width * crop_area[0])
left = int(height * crop_area[1])
upper = int(width * crop_area[2])
right = int(height * crop_area[3])
lower
# 定义裁剪区域
= image.crop((left, upper, right, lower))
cropped
# 保存裁剪后的图像
cropped.save(output_img)
if __name__ == "__main__":
= argparse.ArgumentParser()
parser "input_img", help="输入图像文件路径")
parser.add_argument("output_img", help="输出图像文件路径")
parser.add_argument("--left", type=float, help="裁剪区域左边界(占宽度的比例)")
parser.add_argument("--upper", type=float, help="裁剪区域上边界(占高度的比例)")
parser.add_argument("--right", type=float, help="裁剪区域右边界(占宽度的比例)")
parser.add_argument("--lower", type=float, help="裁剪区域下边界(占高度的比例)")
parser.add_argument(= parser.parse_args()
args
= (args.left, args.upper, args.right, args.lower)
crop_area crop_image(args.input_img, args.output_img, crop_area)
在终端执行以下代码裁剪图片:
python crop.py data/image.png data/crop2.png --left 0 --upper 0.5 --right 1 --lower 1
通过以下代码查看使用帮助 :
python crop.py -h
13.2 下载图片
download.py
文件内容如下:
import argparse
import requests
def download_image(url, save_path):
= requests.get(url)
response if response.status_code == 200:
with open(save_path, 'wb') as file:
file.write(response.content)
print("图片下载成功!")
else:
print("图片下载失败!")
if __name__ == "__main__":
= argparse.ArgumentParser()
parser "url", help="图片的URL地址")
parser.add_argument("save_path", help="图片保存的路径和文件名")
parser.add_argument(= parser.parse_args()
args
download_image(args.url, args.save_path)
通过以下代码下载图片
python download.py https://www.tmwr.org/figures/software-descr-examples-1.png data/image.png