PPTX DOCX XLSX PDF ODP
Aspose.Imaging  для Python
GIF

Используйте Python для сглаживания GIF изображений

Сглаживайте GIF изображения и фотографии с использованием собственных Python приложений и серверных API

Как сглаживать GIF изображения используя библиотеку для Python

Оптимизация параметров изображений и фотографий для сайта является важным шагом для увеличения посещаемости веб ресурсов. Один из таких приемов оптимизации заключается в уменьшении цветовой гаммы изображения, что снижает размер файла и ускоряет время загрузки страницы. Вместе с тем, чтобы избежать появления резких границ и нарушения градиента цвета, рекомендуется использовать метод дизеринга (dithering), который помогает сгладить переходы между цветами и улучшает качество изображения. Этот подход добавляет некоторый “шум” к изображению, что положительно сказывается на восприятии. Для сглаживания изображений в формате GIF мы применим Aspose.Imaging for Python via .NET API, который представляет собой многофункциональный, мощный и простой в использовании API для обработки и преобразования изображений для платформы Python. Вы можете установить его, используя следующую команду из вашей системной командной консоли:

Системная командная строка

>> pip install aspose-imaging-python-net

Действия по сглаживанию GIF с помощью Python

Вам понадобится aspose-imaging-python-net , чтобы попробовать следующий рабочий процесс в вашей собственной среде.

  • загрузите файлы GIF с помощью метода Image.Load;
  • сгладте (dither) изображение;
  • сохраните сглаженное изображение на диск в поддерживаемом Aspose.Imaging формате.

Системные Требования

Aspose.Imaging для Python поддерживается во всех основных операционных системах. Просто убедитесь, что у вас есть следующие предпосылки:

  • Microsoft Windows/Linux с .NET Core Runtime.
  • Менеджер пакетов Python и PyPi.
 

Сглаживание изображений GIF - Python

from aspose.imaging import Image, RasterImage, DitheringMethod, IMultipageImage
from aspose.imaging.imageoptions import PngOptions
from aspose.pycore import as_of, is_assignable
import os
if 'TEMPLATE_DIR' in os.environ:
templates_folder = os.environ['TEMPLATE_DIR']
else:
templates_folder = r"C:\Users\USER\Downloads\templates"
delete_output = 'SAVE_OUTPUT' not in os.environ
def delete_file(file):
if delete_output:
os.remove(file)
def floyd_steinberg_dithering():
filter_images(lambda image: image.dither(DitheringMethod.FLOYD_STEINBERG_DITHERING, 4), "floydsteinbergdithering")
def threshold_dithering():
filter_images(lambda image: image.dither(DitheringMethod.THRESHOLD_DITHERING, 4), "thresholddithering")
def filter_images(do_filter, filter_name):
obj_init = []
obj_init.append("jpg")
obj_init.append("png")
obj_init.append("bmp")
obj_init.append("apng")
obj_init.append("dicom")
obj_init.append("jp2")
obj_init.append("j2k")
obj_init.append("tga")
obj_init.append("webp")
obj_init.append("tiff")
obj_init.append("gif")
obj_init.append("ico")
raster_formats = obj_init
obj_init2 = []
obj_init2.append("svg")
obj_init2.append("otg")
obj_init2.append("odg")
obj_init2.append("eps")
obj_init2.append("wmf")
obj_init2.append("emf")
obj_init2.append("wmz")
obj_init2.append("emz")
obj_init2.append("cmx")
obj_init2.append("cdr")
vector_formats = obj_init2
all_formats = raster_formats
all_formats.extend(vector_formats)
for format_ext in all_formats:
input_file = os.path.join(templates_folder, f"template.{format_ext}")
is_vector_format = format_ext in vector_formats
if is_vector_format:
input_file = rasterize_vector_image(format_ext, input_file)
output_file = os.path.join(templates_folder, f"{filter_name}_{format_ext}.png")
print(format_ext)
# explicit type casting from Image to RasterImage
with as_of(Image.load(input_file), RasterImage) as image:
do_filter(image)
multi_page = None
# if image implements an IMultipageImage interface
if is_assignable(image, IMultipageImage):
multi_page = as_of(image, IMultipageImage)
if multi_page is not None and multi_page.page_count > 1:
# for loop
for_first_step = True
page_index = 0
for page in multi_page.pages:
file_name = os.path.join(
templates_folder,
f"{filter_name}_page{page_index}_{format_ext}.png")
page.save(file_name, PngOptions())
delete_file(file_name)
page_index += 1
else:
image.save(output_file, PngOptions())
delete_file(output_file)
if is_vector_format:
delete_file(input_file)
def rasterize_vector_image(format_ext, input_file):
output_file = os.path.join(templates_folder, f"rasterized.{format_ext}.png")
with Image.load(input_file) as image:
image.save(output_file, PngOptions())
return output_file
# run
floyd_steinberg_dithering()
threshold_dithering()
 
  • Об Aspose.Imaging for Python API

    Aspose.Imaging API — это решение для обработки изображений, позволяющее создавать, изменять, рисовать или конвертировать изображения и фотографии в приложениях. Он предлагает: кросс-платформенную обработку изображений, включая, помимо прочего, преобразования между различными форматами изображений (включая единую многостраничную или многокадровую обработку изображений), модификации, такие как рисование, работа с графическими примитивами, преобразования (изменение размера, обрезка, отражение и поворот), бинаризация, оттенки серого, настройка яркости, контрастности, расширенные функции обработки изображений (фильтрация, дизеринг, маскирование, устранение перекоса) и стратегии оптимизации памяти. Это автономная библиотека, которая не зависит от какого-либо программного обеспечения для операций с изображениями. Можно легко добавить в проекты высокопроизводительные функции преобразования изображений с помощью собственных API. Это 100% частные локальные API, а изображения обрабатываются на ваших серверах.

    Сглаживание GIF через онлайн-приложение

    Сглаживайте документы GIF, посетив наш веб-сайт Live Demos Online примеры имеют следующие преимущества

      Не нужно ничего скачивать или настраивать
      Нет необходимости писать какой-либо код
      Просто загрузите свои файлы GIF и нажмите кнопку "Сгладить"
      Мгновенно получить ссылку для скачивания результирующего файла

    GIF Чем является GIF формат

    Формат GIF или Graphical Interchange Format представляет собой тип сильно сжатого изображения. Принадлежащий Unisys, GIF использует алгоритм сжатия LZW, который не ухудшает качество изображения. Для каждого изображения в формате GIF обычно допускается до 8 бит на пиксель, а в изображении допускается до 256 цветов. В отличие от изображения в формате JPEG, которое может отображать до 16 миллионов цветов и довольно далеко выходит за пределы возможностей человеческого глаза. Когда появился Интернет, GIF-файлы оставались лучшим выбором, потому что они требовали низкой пропускной способности и были совместимы с графикой, которая использует сплошные области цвета. Анимированный GIF объединяет многочисленные изображения или кадры в один файл и отображает их в последовательности для создания анимированного клипа или короткого видео. Ограничения по цвету составляют до 256 для каждого кадра и, вероятно, будут наименее подходящими для воспроизведения других изображений и фотографий с цветовым градиентом.

    Читать далее

    Другие поддерживаемые форматы изображений для сглаживания

    Используя Python, можно легко сглаживать различные форматы, в том числе:

    APNG (Анимированная портативная сетевая графика)
    BMP (Растровое изображение)
    ICO (Значок Windows)
    JPG (Объединенная группа экспертов по фотографии)
    JPEG (Объединенная группа экспертов по фотографии)
    DIB (Независимое от устройства растровое изображение)
    DICOM (Цифровая визуализация и связь)
    DJVU (Графический формат)
    DNG (Изображение цифровой камеры)
    EMF (Расширенный формат метафайла)
    EMZ (Сжатый расширенный метафайл Windows)
    JP2 (JPEG 2000)
    J2K (Сжатое изображение вейвлета)
    PNG (Портативная сетевая графика)
    TIFF (Формат изображения с тегами)
    TIF (Формат изображения с тегами)
    WEBP (Растровое веб-изображение)
    WMF (Метафайл Microsoft Windows)
    WMZ (Сжатая оболочка проигрывателя Windows Media)
    TGA (Тарга Графика)
    SVG (Масштабируемая векторная графика)
    EPS (Инкапсулированный язык PostScript)
    CDR (Векторный рисунок изображения)
    CMX (Обмен изображениями Corel)
    OTG (Стандарт OpenDocument)
    ODG (Формат отрисовки Apache OpenOffice)