Главная » 2025 » Декабрь » 10 » UImage: обрезка изображения
19:58
UImage: обрезка изображения

UImage: обрезка изображения

Статический метод crop() из класса UImageChange считывает прямоугольную область из исходного изображения. Формат метода:

UImageChange.crop(<UImage>, <URect>)

В качестве первого параметра указывается объект UImage. Второй параметр задает координаты и размеры прямоугольной области в виде объекта URect. Метод возвращает объект UImage или значение None в случае ошибки. Размеры изображения будут соответствовать размерам области пересечения, а не точным размерам объекта URect. Если пересечения нет, то метод вернет значение None. Операция выполняется с помощью библиотеки Pillow. Пример:

from unicross_image.uhelper import URect
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange

img = UImage.load("foto.png")
print(img)      # UImage(width=500, height=333)
r = URect(0, 0, 200, 100)
img2 = UImageChange.crop(img, r)
if img2:
    print(img2) # UImage(width=200, height=100)
    img2.save("test.png")
else:
    print("Ошибка при выполнении операции")

Если библиотека Pillow недоступна, то метод crop() передает управление статическому методу crop_im(), который выполняет аналогичную операцию с помощью библиотеки ImageMagick. Этот метод можно вызвать непосредственно. Формат метода:

UImageChange.crop_im(<UImage>, <URect>)

В качестве первого параметра указывается объект UImage. Второй параметр задает координаты и размеры прямоугольной области в виде объекта URect. Метод возвращает объект UImage или значение None в случае ошибки. Операция выполняется с помощью библиотеки ImageMagick. Пример:

from unicross_image.uhelper import URect
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange

img = UImage.load("foto.png")
print(img)      # UImage(width=500, height=333)
r = URect(0, 0, 200, 100)
img2 = UImageChange.crop_im(img, r)
if img2:
    print(img2) # UImage(width=200, height=100)
    img2.save("test.png")
else:
    print("Ошибка при выполнении операции")

Обрезка лишних одноцветных границ

Обрезать лишние одноцветные границы позволяет статический метод trim() из класса UImageChange. Формат метода:

UImageChange.trim(<UImage>, color=None)

В качестве первого параметра указывается объект UImage. Параметр color задает цвет границы в виде объекта UColor. Если параметр не задан или имеет значение None, то цвет границы будет белым. Метод возвращает объект UImage или значение None в случае ошибки. Обрезка изображения производится с помощью метода crop(). Если библиотека Pillow недоступна, то обрезка выполняется с помощью метода crop_im(). Пример:

from unicross_image.ucolor import UColor
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange

img = UImage.load("foto_border.png")
print(img)      # UImage(width=661, height=441)
img2 = UImageChange.trim(img, UColor("white"))
if img2:
    print(img2) # UImage(width=500, height=333)
    img2.save("test.png")
else:
    print("Ошибка при выполнении операции")

Вместо метода trim() можно воспользоваться статическим методом trim_im(), который выполняет аналогичную операцию с помощью библиотеки ImageMagick.  Формат метода:

UImageChange.trim_im(<UImage>, color=None, distance=0)

В качестве первого параметра указывается объект UImage. Параметр color задает цвет границы в виде объекта UColor. Если параметр color имеет значение None, то используются цвета из угловых пикселей. Обратите внимание, такая ситуация может привести к неожиданным результатам. При отсутствии границы с какой-либо стороны обрезано будет что-то лишнее, совпадающее с цветом углового пикселя. Лучше явно задавать цвет границы, если, конечно, цвет известен заранее.

Необязательной параметр distance позволяет указать в процентах (от 1 до 50) на сколько цвет может отличаться от указанного цвета в параметре color. Значение 0 (значение по умолчанию) задает точный цвет.

Метод возвращает объект UImage или значение None в случае ошибки. Пример:

from unicross_image.ucolor import UColor
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange

img = UImage.load("foto_border.png")
print(img)      # UImage(width=661, height=441)
img2 = UImageChange.trim_im(img, UColor("white"))
if img2:
    print(img2) # UImage(width=500, height=333)
    img2.save("test.png")
else:
    print("Ошибка при выполнении операции")

Обратите внимание, метод trim(), при отсутствии библиотеки Pillow, не передает управление методу trim_im(). Эти методы не зависят друг от друга и выполняют операцию разными способами. При использовании метода trim() поиск границ выполняется с помощью Python, что может выполняться медленно при больших размерах изображения. При использовании метода trim_im() операция целиком выполняется с помощью библиотеки ImageMagick.

Класс входит в состав графической библиотеки UImage для Python 3. Описание библиотеки UImage

Категория: UImage | Просмотров: 6 | Добавил: unicross | Теги: PIL, UImage, ImageMagick, Python | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Списки слов [10]
Списки слов и словари
OCR [4]
Оптическое распознавание символов
UImage [80]
Графическая библиотека для Python
UImage C [7]
Графическая библиотека для Python
Программы [4]
Полезные программы
Прочее [3]
Другие темы
Календарь
«  Декабрь 2025  »
Пн Вт Ср Чт Пт Сб Вс
1234567
891011121314
15161718192021
22232425262728
293031