UImage: изменение размера изображения
Изменить размер изображения позволяет статический метод resize() из класса UImageChange. Формат метода:
UImageChange.resize(<UImage>, <Ширина>, <Высота>, filter=None)
В качестве первого параметра указывается объект UImage. Второй параметр задает новую ширину изображения, а третий параметр — новую высоту. Изменение размера производится не пропорционально. Иными словами, если пропорции не соблюдены, то изображение будет искажено.
Параметр filter задает способ изменения размеров. Можно указать значения: "bicubic" (значение по умолчанию), "nearest", "box", "bilinear", "hamming" или "lanczos". Подробное описание фильтров можно найти в документации к библиотеке Pillow.
Метод возвращает объект UImage или значение None в случае ошибки. Операция выполняется с помощью библиотеки Pillow. Уменьшим размер изображения в два раза:
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange
img = UImage.load("foto.png")
w, h = img.get_size()
img2 = UImageChange.resize(img, w // 2, h // 2)
if img2:
print(img2)
img2.save("test.png")
else:
print("Ошибка при выполнении операции")
Если библиотека Pillow недоступна, то метод resize() передает управление статическому методу resize_im(), который выполняет аналогичную операцию с помощью библиотеки ImageMagick. Этот метод можно вызвать непосредственно. Формат метода:
UImageChange.resize_im(<UImage>, <Ширина>, <Высота>, filter=None)
В качестве первого параметра указывается объект UImage. Второй параметр задает новую ширину изображения, а третий параметр — новую высоту. Изменение размера производится не пропорционально. Иными словами, если пропорции не соблюдены, то изображение будет искажено.
Параметр filter задает способ изменения размеров. Можно указать значения: "Point", "Hermite", "Cubic", "Box", "Gaussian", "Catrom", "Triangle", "Quadratic", "Mitchell" или "CubicSpline". Подробное описание фильтров можно найти в документации к библиотеке ImageMagick.
Метод возвращает объект UImage или значение None в случае ошибки. Уменьшим размер изображения в два раза:
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange
img = UImage.load("foto.png")
w, h = img.get_size()
img2 = UImageChange.resize_im(img, w // 2, h // 2)
if img2:
print(img2)
img2.save("test.png")
else:
print("Ошибка при выполнении операции")
Если в качестве ширины или высоты указать значение 0, то второй компонент будет рассчитан автоматически с соблюдением пропорций. Укажем только ширину:
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange
img = UImage.load("foto.png")
img2 = UImageChange.resize_im(img, 250, 0)
if img2:
print(img2)
img2.save("test.png")
else:
print("Ошибка при выполнении операции")
Статический метод thumbnail() из класса UImageChange создает уменьшенную версию изображения, указанного размера. Формат метода:
UImageChange.thumbnail(<UImage>, <Ширина>, <Высота>)
В качестве первого параметра указывается объект UImage. Второй параметр задает новую ширину изображения, а третий параметр — новую высоту. Обратите внимание на то, что изменение размера производится пропорционально. Иными словами за основу берется минимальное значение, а второе значение вычисляется пропорционально первому. Метод возвращает объект UImage или значение None в случае ошибки. Операция выполняется с помощью библиотеки Pillow. Пример:
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange
img = UImage.load("foto.png")
print(img) # UImage(width=500, height=333)
img2 = UImageChange.thumbnail(img, 250, 300)
if img2:
print(img2) # UImage(width=250, height=167)
img2.save("test.png")
else:
print("Ошибка при выполнении операции")
Уменьшить изображение в два раза с соблюдением пропорций позволяет статический метод reduce() из класса UImageChange. Формат метода:
UImageChange.reduce(<UImage>)
В качестве параметра указывается объект UImage. Метод возвращает объект UImage или значение None в случае ошибки. Операция выполняется с помощью библиотеки Pillow. Уменьшим изображение в два раза:
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange
img = UImage.load("foto.png")
print(img) # UImage(width=500, height=333)
img2 = UImageChange.reduce(img)
if img2:
print(img2) # UImage(width=250, height=167)
img2.save("test.png")
else:
print("Ошибка при выполнении операции")
Если библиотека Pillow недоступна, то метод reduce() передает управление статическому методу reduce_im(), который выполняет аналогичную операцию с помощью библиотеки ImageMagick. Этот метод можно вызвать непосредственно. Формат метода:
UImageChange.reduce_im(<UImage>)
В качестве параметра указывается объект UImage. Метод возвращает объект UImage или значение None в случае ошибки. Уменьшим изображение в два раза:
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange
img = UImage.load("foto.png")
print(img) # UImage(width=500, height=333)
img2 = UImageChange.reduce_im(img)
if img2:
print(img2) # UImage(width=250, height=167)
img2.save("test.png")
else:
print("Ошибка при выполнении операции")
Класс входит в состав графической библиотеки UImage для Python 3. Описание библиотеки UImage