Главная » 2025 » Декабрь » 01 » Класс UImageRGB: загрузка изображения из файла
20:54
Класс UImageRGB: загрузка изображения из файла

Класс UImageRGB: загрузка изображения из файла

Загрузить изображение из файла позволяет статический метод load(). Формат метода:

UImageRGB.load(<Путь>)

В качестве параметра указывается путь к файлу. Если загрузка выполнена успешно,  то метод вернет объект UImageRGB, а в противном случае — значение None. Пример:

from unicross_image.uimagergb import UImageRGB

img = UImageRGB.load("foto.jpg")
if img:
    print(img)  # UImageRGB(width=500, height=333)
else:
    print("Не удалось загрузить изображение")

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

  • .uimage — собственный формат файла изображения библиотеки UImage. Если изображение содержит 3 канала, то оно загружается как есть с максимальной скоростью. Если изображение содержит один или четыре канала, то выполняется преобразование в формат RGB (альфа-канал отбрасывается);
  • .ppm — бинарный формат (P6) файла PPM. Изображение загружается как есть с максимальной скоростью.

Если загружаемый файл имеет расширение .uimage, то методы load() и load_im() автоматически передают управление статическому методу load_uimage(). Этот метод можно вызывать непосредственно. Формат метода:

UImageRGB.load_uimage(<Путь>)

В качестве параметра указывается путь к файлу с расширением .uimage. Если загрузка выполнена успешно, то метод вернет объект UImageRGB, а в противном случае — значение None. Если изображение содержит 3 канала, то оно загружается как есть с максимальной скоростью. Если изображение содержит один или четыре канала, то выполняется преобразование в формат RGB (альфа-канал отбрасывается). Пример:

img = UImageRGB.load_uimage("foto.uimage")
print(img) # UImageRGB(width=500, height=333)

Если загружаемый файл имеет расширение .ppm, то методы load() и load_im() автоматически передают управление статическому методу load_ppm_p6(). Этот метод можно вызывать непосредственно для загрузки бинарного формата (P6) файла PPM. Формат метода:

UImageRGB.load_ppm_p6(<Путь>)

В качестве параметра указывается путь к файлу с расширением .ppm. Если загрузка выполнена успешно, то метод вернет объект UImageRGB, а в противном случае — значение None. Пример:

img = UImageRGB.load_ppm_p6("foto.ppm")
print(img) # UImageRGB(width=500, height=333)

Загрузка изображения с помощью PIL (PILLOW)

Если доступна библиотека PIL (PILLOW), то с помощью метода load() можно загрузить изображения в форматах PNG, GIF, JPEG, BMP, TIFF и др. Полный список форматов доступен по ссылке:

https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html

Если изображение не в формате RGB, то выполняется преобразование.

Установить библиотеку PIL (PILLOW) можно с помощью команды:

pip install Pillow

Загрузка изображения с помощью ImageMagick

Если библиотека PIL (PILLOW) недоступна, то метод load() пытается загрузить изображение тех же самых форматов с помощью библиотеки ImageMagick. Увидеть путь к библиотеке позволяет метод get_image_magick_path() объекта изображения:

img = UImageRGB(1, 1)
print(img.get_image_magick_path())
# C:\ImageMagick\magick.exe

Следует учитывать, что взаимодействие с библиотекой ImageMagick выполняется через командную строку и файловую систему. Это не очень эффективно при выполнении простых операций, но позволяет выполнить сложную операцию с помощью компилируемого языка программирования. В результате чего можно даже повысить производительность. С учетом сказанного важно соблюсти следующие требования:

  • каталог unicross_image с файлами библиотеки UImage должен быть доступен для записи и чтения без прав администратора. Кроме того, в пути не должно быть русских букв. Еще раз. Нельзя размещать библиотеку в системных папках и в папках с русским буквами в пути;
  • в пути к файлу magick.exe не должно быть русских букв.

Получить путь к каталогу для временных файлов позволяет метод get_tmp_path(). Пример:

img = UImageRGB(1, 1)
print(img.get_tmp_path())
# D:\UImage\unicross_image\tmp

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

UImageRGB.load_im(<Путь>, auto_orient_jpg=True)

В качестве первого параметра указывается путь к файлу. Второй параметр позволяет определить ориентацию JPEG-файла и автоматически повернуть изображение в случае необходимости. Значение False отключает этот функционал. Если загрузка выполнена успешно, то метод вернет объект UImageRGB, а в противном случае — значение None.

Если загружаемый файл имеет расширение .uimage, то метод load_im() автоматически передаст управление статическому методу load_uimage(). Если загружаемый файл имеет расширение .ppm, то метод load_im() автоматически передаст управление статическому методу load_ppm_p6().

Пример загрузки изображения только с помощью библиотеки ImageMagick:

from unicross_image.uimagergb import UImageRGB

img = UImageRGB.load_im("foto.png")
if img:
    print(img)  # UImageRGB(width=500, height=333)
else:
    print("Не удалось загрузить изображение")

Загрузка изображения из файла в формате RAW RGB

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

UImageRGB.load_rgb(<Ширина>, <Высота>, <Путь>)

Формат RAW RGB ничего не знает ни о ширине изображения, ни о его высоте. Он содержит только набор байтов в формате RGB. Поэтому в первых двух параметрах нужно явно задать размеры изображения. В третьем параметре указывается путь до файла с расширением .rgb. Если загрузка выполнена успешно, то метод вернет объект UImageRGB, а в противном случае — значение None. Пример:

from unicross_image.uimagergb import UImageRGB

img = UImageRGB.load("foto.jpg")
if img:
    # Сохранение в формате RAW RGB
    img.save_rgb("foto.rgb")
    
    # Размеры нужно хранить отдельно
    w, h = img.get_size()
    
    # Загрузка из файла в формате RAW RGB
    img2 = UImageRGB.load_rgb(w, h, "foto.rgb")
    if img2:
        print(img2)  # UImageRGB(width=500, height=333)
    else:
        print("Не удалось загрузить изображение")
else:
    print("Не удалось загрузить изображение")

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

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