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