Главная » 2025 » Декабрь » 03 » Класс UImageGray: загрузка изображения из файла
22:52
Класс UImageGray: загрузка изображения из файла

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

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

UImageGray.load(<Путь>)

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

from unicross_image.uimagegray import UImageGray

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

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

value = int(round(r * 0.298912 + g * 0.586611 + b * 0.114478))

Если нужно, чтобы преобразование всегда выполнялось по этой формуле, то следует загрузить изображение с помощью класса UImageRGB, а затем преобразовать его в оттенки серого с помощью метода get_uimagegray():

from unicross_image.uimagergb import UImageRGB

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

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

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

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

UImageGray.load_uimage(<Путь>)

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

from unicross_image.uimagegray import UImageGray

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

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

UImageGray.load_ppm_p6(<Путь>)

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

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

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

UImageGray.load_pgm_p5(<Путь>)

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

img = UImageGray.load("foto.jpg")
img.save_pgm_p5("foto.pgm")

img = UImageGray.load_pgm_p5("foto.pgm")
print(img) # UImageGray(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

После загрузки изображения из файла производится преобразование в режим L средствами библиотеки PIL.

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

pip install Pillow

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

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

Увидеть путь к библиотеке позволяет метод get_image_magick_path() объекта изображения:

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

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

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

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

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

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

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

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

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

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

from unicross_image.uimagegray import UImageGray

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

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

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

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

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

from unicross_image.uimagegray import UImageGray

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

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

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