PPTX DOCX XLSX PDF ODP
Aspose.Imaging  voor Python
EMF

Gebruik Python voor het ditheren van afbeeldingen in EMF

Maak Python-apps om EMF-afbeeldingen en foto’s te ditheren via server-API’s

Hoe u EMF afbeeldingen en foto's kunt ditheren met Python

Het verbeteren van afbeeldings- en fotoparameters voor een website heeft een aanzienlijke invloed op het webverkeer. Eén van deze optimalisaties is het verkleinen van het kleurenpalet van een afbeelding, waardoor de bestandsgrootte effectief wordt geminimaliseerd en het laden van pagina’s wordt versneld. Om abrupte randen of verstoringen in kleurovergangen te voorkomen, wordt echter aanbevolen gebruik te maken van de ditheringmethode. Deze techniek helpt bij het verfijnen van kleurovergangen en het verbeteren van de algehele beeldkwaliteit. Het introduceert een lichte “ruis” die de beeldperceptie positief beïnvloedt. Voor ditherafbeeldingen in de indeling EMF zijn we van toepassing Aspose.Imaging for Python via .NET API, een veelzijdige, krachtige en gebruiksvriendelijke API voor beeldmanipulatie en conversie voor het Python-platform. U kunt het installeren met behulp van de volgende opdracht van uw systeemopdracht.

De systeemopdrachtregel

>> pip install aspose-imaging-python-net

Stappen om EMFs te ditheren via Python

U hebt de aspose-imaging-python-net nodig om de volgende workflow in uw eigen omgeving uit te proberen.

  • Laad EMF-bestanden met de methode Image.Load
  • Dither afbeeldingen;
  • Bewaar gecomprimeerde afbeelding op schijf in het formaat dat wordt ondersteund door Aspose.Imaging

systeem vereisten

Aspose.Imaging voor Python wordt ondersteund op alle belangrijke besturingssystemen. Zorg ervoor dat u aan de volgende vereisten voldoet.

  • Microsoft Windows / Linux met .NET Core Runtime.
  • Python en PyPi pakketbeheerder.
 

Dither EMF afbeeldingen - 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()
 
  • Over Aspose.Imaging voor Python API

    Aspose.Imaging API is een beeldverwerkingsoplossing voor het maken, wijzigen, tekenen of converteren van afbeeldingen (foto’s) binnen applicaties. Het biedt: platformonafhankelijke beeldverwerking, inclusief maar niet beperkt tot conversies tussen verschillende beeldformaten (inclusief uniforme beeldverwerking van meerdere pagina’s of meerdere frames), aanpassingen zoals tekenen, werken met grafische primitieven, transformaties (formaat wijzigen, bijsnijden, spiegelen en roteren , binarisatie, grijswaarden, aanpassen), geavanceerde functies voor beeldmanipulatie (filteren, dithering, maskeren, rechtzetten) en strategieën voor geheugenoptimalisatie. Het is een op zichzelf staande bibliotheek en is niet afhankelijk van software voor beeldbewerkingen. Men kan eenvoudig hoogwaardige functies voor beeldconversie toevoegen met native API’s binnen projecten. Dit zijn 100% private on-premise API’s en afbeeldingen worden verwerkt op uw servers.

    Dither EMFs via online app

    Dither EMF-documenten door onze Live Demo-website te bezoeken. De live demo heeft de volgende voordelen:

      U hoeft niets te downloaden of in te stellen
      U hoeft geen code te schrijven
      Upload gewoon uw EMF-bestanden en druk op de knop "Dither nu"
      Krijg direct de downloadlink voor het resulterende bestand

    EMF Wat is EMF Bestandsformaat

    Verbeterd metabestandsformaat (EMF) slaat grafische afbeeldingen apparaatonafhankelijk op. Metabestanden van EMF bestaan ​​uit records met variabele lengte in chronologische volgorde die de opgeslagen afbeelding kunnen weergeven na parsering op elk uitvoerapparaat. Deze records met variabele lengte kunnen definities zijn van ingesloten objecten, opdrachten voor tekenen en grafische eigenschappen die essentieel zijn om de afbeelding nauwkeurig weer te geven. Wanneer een apparaat een EMF-metabestand opent met zijn eigen grafische omgeving, blijven de verhoudingen, afmetingen, kleuren en andere grafische eigenschappen van de originele afbeelding hetzelfde, ongeacht het platform van het openende apparaat.

    Lees verder

    Andere ondersteunde dither-indelingen

    Met Python kan men gemakkelijk verschillende formaten ditheren, waaronder.

    APNG (Geanimeerde draagbare netwerkgraphics)
    BMP (Bitmapafbeelding)
    ICO (Windows-pictogram)
    JPG (Joint Photographic Experts Group)
    JPEG (Joint Photographic Experts Group)
    DIB (Apparaatonafhankelijke bitmap)
    DICOM (Digitale beeldvorming en communicatie)
    DJVU (Grafisch formaat)
    DNG (Digitale Camera Afbeelding)
    EMZ (Windows gecomprimeerd verbeterd metabestand)
    GIF (Grafisch uitwisselingsformaat)
    JP2 (JPEG 2000)
    J2K (Wavelet gecomprimeerde afbeelding)
    PNG (Draagbare netwerkgrafieken)
    TIFF (Gelabelde afbeeldingsindeling)
    TIF (Gelabelde afbeeldingsindeling)
    WEBP (Rasterwebafbeelding)
    WMF (Microsoft Windows-metabestand)
    WMZ (Gecomprimeerde Windows Media Player-skin)
    TGA (Targa-afbeelding)
    SVG (Schaalbare vectorafbeeldingen)
    EPS (Encapsulated PostScript-taal)
    CDR (Vector tekening afbeelding)
    CMX (Corel Exchange-afbeelding)
    OTG (OpenDocument-standaard)
    ODG (Apache OpenOffice Draw-indeling)