SVG Görüntü Titreme için Python kullanın
Sunucu API’leri aracılığıyla SVG Görüntü ve Fotoğrafları Taklit Etmek için Python Uygulama Oluşturun
Python ile SVG Görüntü ve Fotoğrafların Dither'i Nasıl Yapılır?
Bir web sitesine ilişkin görsel ve fotoğraf parametrelerinin iyileştirilmesi, web trafiğini önemli ölçüde etkiler. Bu optimizasyonlar arasında, görüntünün renk paletinin azaltılması, dosya boyutlarını etkili bir şekilde en aza indirir ve sayfa yüklemeyi hızlandırır. Ancak renk gradyanlarında ani kenarları veya bozuklukları önlemek için renk taklidi yönteminden yararlanılması önerilir. Bu teknik, renk geçişlerinin iyileştirilmesine ve genel görüntü kalitesinin artırılmasına yardımcı olur. Görüntü algısını olumlu yönde etkileyen hafif bir “gürültü” ortaya çıkarır. SVG biçimindeki renk taklidi görüntüleri için şunu uygulayacağız: Python platformu için zengin özelliklere sahip, güçlü ve kullanımı kolay bir görüntü işleme ve dönüştürme API’si olan Aspose.Imaging for Python via .NET API. Sistem komutunuzdan aşağıdaki komutu kullanarak kurabilirsiniz.
Sistem komut satırı
>> pip install aspose-imaging-python-net
Python aracılığıyla SVG'leri Taklit Etme Adımları
Aşağıdaki iş akışını kendi ortamınızda denemek için aspose-imaging-python-net gerekir.
- SVG dosyalarını Image.Load yöntemiyle yükleyin
- Titreşim görüntüleri;
- Sıkıştırılmış görüntüyü Aspose.Imaging formatında diske kaydedin
sistem gereksinimleri
Aspose.Imaging for Python tüm büyük işletim sistemlerinde desteklenir. Sadece aşağıdaki ön koşullara sahip olduğunuzdan emin olun.
- .NET Core Runtime ile Microsoft Windows / Linux.
- Python ve PyPi paket yöneticisi.
SVG görüntüleri taklidi - 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() |
Python API için Aspose.Imaging Hakkında
Aspose.Imaging API, uygulamalar içinde görüntüleri (fotoğrafları) oluşturmak, değiştirmek, çizmek veya dönüştürmek için kullanılan bir görüntü işleme çözümüdür. Şunları sunar: Çeşitli görüntü formatları (tek tip çok sayfalı veya çok çerçeveli görüntü işleme dahil) arasındaki dönüştürmeler dahil ancak bunlarla sınırlı olmamak üzere çapraz platform Görüntü işleme, çizim, grafik temel öğeleriyle çalışma, dönüştürmeler (yeniden boyutlandırma, kırpma, çevirme ve döndürme) gibi değişiklikler , ikilileştirme, gri tonlama, ayarlama), gelişmiş görüntü işleme özellikleri (filtreleme, renk taklidi, maskeleme, eğrilik düzeltme) ve bellek optimizasyon stratejileri. Bu bağımsız bir kitaplıktır ve görüntü işlemleri için herhangi bir yazılıma bağlı değildir. Projelere yerel API’ler ile yüksek performanslı görüntü dönüştürme özellikleri kolayca eklenebilir. Bunlar %100 özel şirket içi API’lerdir ve görüntüler sunucularınızda işlenir.SVG’leri Çevrimiçi Uygulama ile Dither
Canlı Demolar web sitemizi ziyaret ederek SVG belgelerinde renk taklidi yapın. Canlı demo aşağıdaki avantajlara sahiptir
SVG Nedir SVG Dosya formatı
SVG dosyaları, görüntünün görünümünü açıklamak için XML tabanlı metin biçimini kullanan Ölçeklenebilir Vektör Grafik Dosyalarıdır. Ölçeklenebilir kelimesi, SVG'nin kaliteden ödün vermeden farklı boyutlara ölçeklenebilmesini ifade eder. Bu tür dosyaların metin tabanlı açıklaması, onları çözünürlükten bağımsız kılar. Ölçeklenebilirlik sağlamak için web sitesi oluşturmak ve grafik yazdırmak için en çok kullanılan formatlardan biridir. Format ancak iki boyutlu grafikler için kullanılabilir. SVG dosyaları, Chrome, Internet Explorer, Firefox ve Safari dahil olmak üzere neredeyse tüm modern tarayıcılarda görüntülenebilir/açılabilir.
Daha fazla okuDesteklenen Diğer Titreme Biçimleri
Python kullanarak, aşağıdakiler dahil olmak üzere farklı formatları kolayca Titreme yapabilirsiniz.