如何在Python中将正方形图像调整为带白色边框的矩形
我有很多708x708图片,我需要将它们调整为500x250px,保持比例不变。我设想可以通过如何在Python中将正方形图像调整为带白色边框的矩形,python,image-processing,python-imaging-library,Python,Image Processing,Python Imaging Library,我有很多708x708图片,我需要将它们调整为500x250px,保持比例不变。我设想可以通过image.thumboil('image.jpg')将实际图像的大小调整为250x250,并添加两个白色边框来填充剩余的空间。然而,我不知道如何做后者。下面的代码给出了250x250px的缩略图 image = img img image.thumbnail((500, 250)) image.save('image_thumbnail.jpg') print(image.size) 问题类似于
image.thumboil('image.jpg')
将实际图像的大小调整为250x250,并添加两个白色边框来填充剩余的空间。然而,我不知道如何做后者。下面的代码给出了250x250px的缩略图
image = img
img
image.thumbnail((500, 250))
image.save('image_thumbnail.jpg')
print(image.size)
问题类似于
任何建议都将不胜感激 在skiliage
包装中检查此项。有一个名为mode
的参数,您可以在其中控制所需的行为。尝试以下操作:
import cv2
import numpy as np
img = cv2.imread('myimage.jpg', cv2.IMREAD_UNCHANGED)
print('Original Dimensions : ',img.shape)
width = int(img.shape[1] * 35.31 / 100) # 250/708 is 35%
height = int(img.shape[0] * 35.31 / 100)
dim = (width, height)
resized_image = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
print('Resized_image Dimensions : ',resized_image.shape)
row, col = resized_image.shape[:2]
bottom = resized_image[row-2:row, 0:col]
bordersize = 125
border = cv2.copyMakeBorder(
resized_image,
top=bordersize,
bottom=bordersize,
left=0,
right=0,
borderType=cv2.BORDER_CONSTANT,
value=[255, 255, 255]
)
cv2.imshow('image', resized_image)
cv2.imshow('left', bottom)
cv2.imshow('right', border)
cv2.waitKey(0)
cv2.destroyAllWindows()
我尝试了下面的代码。我首先制作一个大小为(250250)的缩略图,并用
ImageOps修改图像。展开添加两个白色边框以生成尺寸(250250)
您只是想调整它的大小还是同时添加白色边框?我想将图片的大小从708x708调整为250x250(缩略图),并在图片的顶部和底部添加白色边框,使其成为500x250。@Liri阅读了有关内容,代码只是调整了图像的方向,它不会按要求调整图像的大小。
from PIL import Image, ImageOps
img = Image.open('801595.jpg')
img.thumbnail((500, 250))
print(img.size)
img_with_border = ImageOps.expand(img, border = (125, 0) ,fill='white')
img_with_border.save('imaged-with-border2.jpg')