PPTX DOCX XLSX PDF ODP
Aspose.Imaging  para Python
JP2

Use Python para pontilhamento de imagens JP2

Crie aplicativos Python para fazer pontilhamento de imagens e fotos JP2 por meio de APIs de servidor

Como pontilhar imagens e fotos JP2 com Python

O aprimoramento dos parâmetros de imagem e foto de um site impacta significativamente o tráfego da web. Entre essas otimizações, a redução da paleta de cores de uma imagem minimiza efetivamente o tamanho dos arquivos e acelera o carregamento da página. No entanto, para evitar bordas abruptas ou perturbações nos gradientes de cores, é recomendado aproveitar o método de pontilhamento. Essa técnica ajuda a refinar as transições de cores e a melhorar a qualidade geral da imagem. Introduz um ligeiro “ruído” que influencia positivamente a percepção da imagem. Para imagens pontilhadas no formato JP2, aplicaremos Aspose.Imaging para Python via .NET API que é uma API de manipulação e conversão de imagens rica em recursos, poderosa e fácil de usar para a plataforma Python. Você pode instalá-lo usando o seguinte comando do comando do sistema.

A linha de comando do sistema

>> pip install aspose-imaging-python-net

Etapas para pontilhar JP2s via Python

Você precisa do aspose-imaging-python-net para tentar o seguinte fluxo de trabalho em seu próprio ambiente.

  • Carregar arquivos JP2 com o método Image.Load
  • Imagens pontilhadas;
  • Salve a imagem compactada no disco no formato suportado pelo Aspose.Imaging

Requisitos de sistema

Aspose.Imaging para Python é compatível com todos os principais sistemas operacionais. Apenas certifique-se de ter os seguintes pré-requisitos.

-Microsoft Windows/Linux com .NET Core Runtime.

  • Gerenciador de pacotes Python e PyPi.
 

Dither imagens JP2 - 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()
 
  • Sobre o Aspose.Imaging para a API Python

    Aspose.Imaging API é uma solução de processamento de imagens para criar, modificar, desenhar ou converter imagens (fotos) dentro de aplicativos. Oferece: Processamento de imagem multiplataforma, incluindo, mas não limitado a, conversões entre vários formatos de imagem (incluindo processamento de imagem uniforme de várias páginas ou vários quadros), modificações como desenho, trabalho com primitivos gráficos, transformações (redimensionar, cortar, virar e girar , binarização, escala de cinza, ajuste), recursos avançados de manipulação de imagem (filtragem, pontilhamento, mascaramento, alinhamento) e estratégias de otimização de memória. É uma biblioteca autônoma e não depende de nenhum software para operações de imagem. Pode-se adicionar facilmente recursos de conversão de imagem de alto desempenho com APIs nativas nos projetos. Essas são APIs locais 100% privadas e as imagens são processadas em seus servidores.

    Dither JP2s via aplicativo on-line

    Dither JP2 documentos visitando nosso site de demonstração ao vivo . A demonstração ao vivo tem os seguintes benefícios

      Não há necessidade de baixar ou configurar nada
      Não há necessidade de escrever nenhum código
      Basta enviar seus arquivos JP2 e clicar no botão "Dither now"
      Obtenha instantaneamente o link de download para o arquivo resultante

    JP2 O que é JP2 Formato de arquivo

    JPEG 2000 (JP2) é um sistema de codificação de imagem e padrão de compressão de imagem de última geração. Projetado, usando a tecnologia wavelet JPEG 2000 pode codificar conteúdo sem perdas em qualquer qualidade de uma só vez. Além disso, sem nenhuma penalidade substancial na eficiência de codificação, o JPEG 2000 tem a capacidade de acessar e decodificar o mesmo conteúdo de forma eficaz em uma variedade de outras resoluções e qualidades. Os fluxos de código em JPEG 2000 são significativamente escaláveis ​​com regiões de interesse que fornecem a facilidade de acesso espacial aleatório. Possuindo até 16384 componentes diversos com as dimensões em terapixels, e precisão que pode chegar a 38 bits/amostra.

    consulte Mais informação

    Outros formatos de pontilhamento suportados

    Usando Python, pode-se facilmente pontilhar diferentes formatos, incluindo.

    APNG (Gráficos de rede portátil animados)
    BMP (Imagem de bitmap)
    ICO (ícone do Windows)
    JPG (Grupo Conjunto de Especialistas em Fotografia)
    JPEG (Grupo Conjunto de Especialistas em Fotografia)
    DIB (Bitmap independente de dispositivo)
    DICOM (Imagens e comunicações digitais)
    DJVU (Formato gráfico)
    DNG (Imagem de câmera digital)
    EMF (Formato de metarquivo aprimorado)
    EMZ (Meta-arquivo aprimorado compactado do Windows)
    GIF (Formato de intercâmbio gráfico)
    J2K (Imagem Comprimida Wavelet)
    PNG (Gráficos Portáteis de Rede)
    TIFF (Formato de imagem marcada)
    TIF (Formato de imagem marcada)
    WEBP (Imagem da Web Raster)
    WMF (Meta-arquivo do Microsoft Windows)
    WMZ (Skin compactada do Windows Media Player)
    TGA (Gráfico Targa)
    SVG (Gráficos vetoriais escalonáveis)
    EPS (Linguagem PostScript Encapsulada)
    CDR (Imagem de desenho vetorial)
    CMX (Imagem do Corel Exchange)
    OTG (Padrão OpenDocument)
    ODG (Formato de desenho do Apache OpenOffice)