Главная » 2025 » Ноябрь » 30 » Класс UImage: сохранение изображения в файл
19:55
Класс UImage: сохранение изображения в файл

Класс UImage: сохранение изображения в файл

Сохранить изображение в файл позволяет метод save(). Формат метода:

save(<Путь>, quality_jpg=70, compress_level_png=6)

В качестве первого параметра указывается путь к файлу. По умолчанию изображения в формате JPEG (альфа-канал при этом отбрасывается) сохраняются с качеством 70. С помощью параметра quality_jpg можно указать другое значение в диапазоне от 0 до 100. Параметр compress_level_png позволяет задать степень сжатия для PNG файлов  в диапазоне от 0 до 9 (значение по умолчанию: 6). Если операция выполнена успешно, то метод вернет значение True, а в противном случае — значение False.

Создадим полупрозрачное изображение красного цвета и сохраним его в файл в формате PNG:

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

img = UImage(300, 200, UColor(255, 0, 0, 128))
if img.save("test.png"):
    print("Изображение успешно сохранено")
else:
    print("Не удалось сохранить изображение")

Без сторонних библиотек метод save() может сохранить файлы в следующих форматах:

  • .uimage — собственный формат файла изображения библиотеки UImage. Изображение сохраняется целиком с альфа-каналом с максимальной скоростью;
  • .ppm — бинарный формат (P6) файла PPM. Перед сохранением выполняется преобразование в формат RGB. Альфа-канал отбрасывается;
  • .rgba — содержит только набор байтов в формате RGBA. Формат RAW RGBA ничего не знает ни о ширине изображения, ни о его высоте.

Если сохраняемый файл имеет расширение .uimage, то методы save() и save_im() автоматически передают управление методу save_uimage_rgba(). Этот метод можно вызывать непосредственно. Формат метода:

save_uimage_rgba(<Путь>)

В качестве параметра указывается путь с расширением .uimage. Если операция выполнена успешно, то метод вернет значение True, а в противном случае — значение False. Изображение сохраняется целиком с альфа-каналом с максимальной скоростью. Пример:

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

img = UImage(300, 200, UColor(255, 0, 0, 128))
if img.save_uimage_rgba("test.uimage"):
    print("Изображение успешно сохранено")
else:
    print("Не удалось сохранить изображение")

Если альфа-канал не имеет значения, то вместо метода save_uimage_rgba() можно воспользоваться методом save_uimage_rgb(). Формат метода:

save_uimage_rgb(<Путь>)

В качестве параметра указывается путь с расширением .uimage. Если операция выполнена успешно, то метод вернет значение True, а в противном случае — значение False. Изображение перед сохранением преобразуется в формат RGB (альфа-канал отбрасывается). Пример:

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

img = UImage(300, 200, UColor(255, 0, 0, 128))
# Альфа-канал будет потерян!
if img.save_uimage_rgb("test.uimage"):
    print("Изображение успешно сохранено")
else:
    print("Не удалось сохранить изображение")

Если сохраняемый файл имеет расширение .ppm, то методы save() и save_im() автоматически передают управление методу save_ppm_p6(). Этот метод можно вызывать непосредственно. Формат метода:

save_ppm_p6(<Путь>)

В качестве параметра указывается путь с расширением .ppm. Если операция выполнена успешно, то метод вернет значение True, а в противном случае — значение False. Перед сохранением выполняется преобразование в формат RGB (альфа-канал отбрасывается). Пример:

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

img = UImage(300, 200, UColor(255, 0, 0, 128))
# Альфа-канал будет потерян!
if img.save_ppm_p6("test.ppm"):
    print("Изображение успешно сохранено")
else:
    print("Не удалось сохранить изображение")

Сохранение изображения с помощью PIL (PILLOW)

Если доступна библиотека PIL (PILLOW), то с помощью метода save() можно сохранить изображение в форматах PNG, GIF, JPEG, BMP, TIFF и WebP. При использовании форматов PNG и WebP альфа-канал сохраняется, а в остальных случаях — отбрасывается. Для формата PNG можно указать степень сжатия (параметр compress_level_png), а для формата  JPEG — качество (параметр quality_jpg).

Если нужно сохранить изображение в каком-либо другом формате, поддерживаемом библиотекой PIL, то можно с помощью метода get_pil_image() произвести преобразование объекта UImage в объект Image, а затем выполнить сохранение файла:

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

img = UImage(300, 200, UColor(255, 0, 0, 128))
# Преобразование объекта UImage в объект Image
img_pil = img.get_pil_image()
print(img_pil.size)       # (300, 200)
print(img_pil.mode)       # RGBA
img_pil = img_pil.convert("RGB")
print(img_pil.mode)       # RGB
# Сохранение с помощью PIL
img_pil.save("test.ppm")

Сохранение изображения с помощью ImageMagick

Если библиотека PIL (PILLOW) недоступна, то метод save() передаст управление методу save_im(), который сохраняет изображение с помощью библиотеки ImageMagick. Этот метод можно вызывать непосредственно. Формат метода:

save_im(<Путь>, quality_jpg=92, compress_level_png=7)

В качестве первого параметра указывается путь к файлу. По умолчанию изображения в формате JPEG (альфа-канал при этом отбрасывается) сохраняются с качеством 92. С помощью параметра quality_jpg можно указать другое значение в диапазоне от 0 до 100. Параметр compress_level_png позволяет задать степень сжатия для PNG файлов  в диапазоне от 0 до 9 (значение по умолчанию: 7). Если операция выполнена успешно, то метод вернет значение True, а в противном случае — значение False.

С помощью метода save_im() можно сохранить изображение в форматах PNG, GIF, JPEG, BMP, TIFF, WebP и др. При использовании форматов PNG и WebP альфа-канал сохраняется, а в остальных случаях — отбрасывается. Для формата PNG можно указать степень сжатия (параметр compress_level_png), а для формата  JPEG — качество (параметр quality_jpg).

Если путь содержит расширение .uimage, то метод save_im() передает управление методу save_uimage_rgba(). Если путь содержит расширение .ppm, то метод save_im() передает управление методу save_ppm_p6(). Если путь содержит расширение .rgba, то метод save_im() передает управление методу save_rgba().

Создадим полупрозрачное изображение красного цвета и сохраним его в файл в формате PNG:

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

img = UImage(300, 200, UColor(255, 0, 0, 128))
if img.save_im("test.png"):
    print("Изображение успешно сохранено")
else:
    print("Не удалось сохранить изображение")

Сохранение изображение в файл в формате RAW RGBA

Для взаимодействия с библиотекой ImageMagick имеется метод save_rgba(), позволяющий сохранить изображение в файл в формате RAW RGBA. Этот формат хорошо понимает библиотека ImageMagick. Формат метода:

save_rgba(<Путь>)

Формат RAW RGBA ничего не знает ни о ширине изображения, ни о его высоте. Он содержит только набор байтов в формате RGBA. В качестве параметра указывается путь до файла с расширением .rgba. Если операция выполнена успешно, то метод вернет значение True, а в противном случае — значение False. Пример:

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

img = UImage(300, 200, UColor(255, 0, 0, 128))
if img.save_rgba("test.rgba"):
    print("Изображение успешно сохранено")
else:
    print("Не удалось сохранить изображение")

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

Категория: UImage | Просмотров: 2 | Добавил: unicross | Теги: PIL, UImage, Python, ImageMagick | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Списки слов [10]
Списки слов и словари
OCR [4]
Оптическое распознавание символов
UImage [18]
Графическая библиотека для Python
Программы [4]
Полезные программы
Прочее [3]
Другие темы
Календарь
«  Ноябрь 2025  »
Пн Вт Ср Чт Пт Сб Вс
     12
3456789
10111213141516
17181920212223
24252627282930
Архив записей