> [Site index](https://perfectvector.com/llms.txt) — available pages and descriptions.

# Python'da API ile bir görseli vektörleştirme

> Python ile PNG, JPEG veya WebP dosyasını vektörleştirme API'sine gönderin. SVG'yi kaydedin, test yanıtını doğrulayın ve kesinti olursa aynı dönüşümü bulun.

Source: https://perfectvector.com/tr/blog/vectorize-image-python-api

Language: tr
Author: Jay
Published: 2026-11-09T08:00:00+09:00

Bir Python betiği raster görseli PerfectVector vektörleştirme API'sine gönderip dönen SVG'yi kaynağın yanına kaydedebilir. Aşağıdaki örnek, dosyayı indirmeden önce dönüşüm kimliğini yazar. Bağlantı kesilirse bu kimlik veya seçtiğiniz istek anahtarıyla sonuca ulaşabilirsiniz.

## Bir test anahtarı ve görsel hazırlayın

[Developer API sayfasından](https://perfectvector.com/account/developers) test anahtarı oluşturun. Anahtarı terminalde `PERFECTVECTOR_API_KEY` olarak ayarlayın. Betiğe veya sürüm kontrolüne eklemeyin. Projenizin Python ortamına `python -m pip install requests` ile Requests kurun.

İlk çalıştırmada `logo.png` adlı 512 × 512 boyutunda bir logo gibi tek kareli PNG, JPEG veya WebP kullanın. API, en fazla 5 MiB boyutundaki ve her kenarı 100 ile 4096 piksel arasındaki görselleri kabul eder. Test modu yüklemeyi denetler ve ücret almadan üzerinde “TEST MODE” yazan sabit SVG döndürür. Bu dosya istek ve indirmeyi doğrular. Kendi görselinizde vektörleştirme kalitesini değerlendirmek için canlı dönüşüm kullanın. [PerfectVector API test modu](https://perfectvector.com/docs/api/test-mode)

Python betiğini bir test anahtarıyla çalıştırdık, doğru biçimde okunan bir SVG indirdik ve aynı istek anahtarıyla aynı dosyayı tekrar gönderdik. İki çalıştırmada da aynı dönüşüm kimliği döndü.

**İş akışı şeması**

![Yerel raster dosya, etiketli bir bulut isteğiyle gönderiliyor ve diske vektör dosyası olarak dönüyor.](https://perfectvector.com/blog/vectorize-image-python-api/workflow.webp)

*İstek anahtarını yükleme kaydıyla birlikte saklayın ve SVG'yi indirmeden önce dönüşüm kimliğini kaydedin.*

## Görseli gönderin ve SVG'yi Python'da kaydedin

Aşağıdakini `vectorize.py` olarak kaydedin. `files` bağımsız değişkeni, Requests'in orijinal baytları `image` form alanına koyan bir multipart yükleme oluşturmasını sağlar. [Requests ile multipart yükleme](https://requests.readthedocs.io/en/latest/user/quickstart/#post-a-multipart-encoded-file)

```python
import os
import sys
import time
from pathlib import Path

import requests

API = "https://api.perfectvector.com/v1"
AUTH = {"Authorization": f"Bearer {os.environ['PERFECTVECTOR_API_KEY']}"}


def checked(response):
    content_type = response.headers.get("Content-Type", "").split(";")[0]
    if response.status_code >= 400 and content_type == "application/problem+json":
        problem = response.json()
        raise RuntimeError(f"{problem['code']} (request {problem['request_id']})")
    response.raise_for_status()
    return response


def vectorize(source, destination, operation_id):
    with source.open("rb") as image:
        response = checked(requests.post(
            f"{API}/vectorizations",
            headers={**AUTH, "Idempotency-Key": operation_id, "Prefer": "wait=10"},
            files={"image": (source.name, image)},
            timeout=30,
        ))

    conversion = response.json()
    conversion_id = conversion["id"]
    print(f"Conversion ID: {conversion_id}", flush=True)
    deadline = time.monotonic() + 720
    while conversion["status"] in {"queued", "processing"}:
        if time.monotonic() >= deadline:
            raise TimeoutError(f"Stopped polling {conversion_id}")
        time.sleep(2)
        conversion = checked(requests.get(
            f"{API}/vectorizations/{conversion_id}", headers=AUTH, timeout=30,
        )).json()

    if conversion["status"] != "succeeded":
        error = conversion["results"][0].get("error") or {}
        raise RuntimeError(f"{conversion_id}: {error.get('code', conversion['status'])}")

    svg = checked(requests.get(
        f"{API}/vectorizations/{conversion_id}/result", headers=AUTH, timeout=30,
    ))
    if svg.headers.get("Content-Type", "").split(";")[0] != "image/svg+xml":
        raise ValueError("Expected an SVG response")
    partial = destination.with_suffix(".svg.part")
    partial.write_bytes(svg.content)
    partial.replace(destination)
    print(f"{destination} saved ({len(svg.content)} bytes)")


if __name__ == "__main__":
    source = Path(sys.argv[1])
    if source.suffix.lower() not in {".png", ".jpg", ".jpeg", ".webp"}:
        raise SystemExit("Choose a PNG, JPEG or WebP file")
    if source.stat().st_size > 5 * 1024 * 1024:
        raise SystemExit("Choose a file no larger than 5 MiB")
    vectorize(source, source.with_suffix(".svg"), sys.argv[2])
```

Komutu `logo.png` dosyasının bulunduğu dizinden çalıştırın. Dönüşüm için bir anahtar seçip çalıştırmadan önce kaydedin. API buna *idempotency anahtarı* der. Aynı yüklemenin tekrarlarını tek dönüşümle ilişkilendirir. Örnekte `logo-asset-0001` kullanılır. Farklı görsel veya işlem için farklı değer verin. [PerfectVector güvenli yeniden deneme kuralları](https://perfectvector.com/docs/api/idempotency)

```bash
python vectorize.py logo.png logo-asset-0001
```

Başarılı test, dönüşüm kimliğini ve bayt sayısını yazıp `logo.svg` dosyasını `logo.png` yanına kaydeder. Örneğin görüntülendiğini doğrulamak için `logo.svg` dosyasını açın. Betik yeni dosyayı indirdikten sonra aynı adlı mevcut SVG'nin üzerine yazar. İlk denemede geçici bir klasör kullanın.

Betik, tamamlanmamış dönüşümü döndürmeden önce sunucudan en fazla 10 saniye beklemesini ister. `queued` ve `processing` durumlarını yaklaşık iki saniyede bir sorgular ve yalnızca `succeeded` durumunda indirir. Test dönüşümü hemen tamamlanır. Canlı bir işleyicide kullanmadan önce bu sorgu yolunu tamamlanmamış dönüşüm içeren yerel bir test yanıtıyla sınayın. [PerfectVector bekleme ve eşzamansız istekler](https://perfectvector.com/docs/api/waiting-and-async)

## Zaman aşımından sonra dönüşümü bulun

Python dönüşüm kimliğini yazdıysa `GET /v1/vectorizations/{id}` ile o kimliği kontrol edin. Başarılı durumdan sonra SVG'yi indirmek için aynı hesap ve modda `GET /v1/vectorizations/{id}/result` kullanın. Sonuç bağlantıları işlem tamamlandıktan 24 saat sonra sona erer. Dosya ileride gerekecekse kendi depolama alanınıza kopyalayın. [PerfectVector sonuç indirme](https://perfectvector.com/docs/api/results)

Python kimliği yazmadan durduysa ilk istekten itibaren 24 saat içinde komutu aynı dosya baytları ve aynı idempotency anahtarıyla çalıştırın. API ilk isteği kabul ettiyse mevcut dönüşümü döndürür. Süre dolduktan sonra aynı anahtarlı istek yeni bir dönüşüm başlatabilir. [PerfectVector güvenli yeniden deneme kuralları](https://perfectvector.com/docs/api/idempotency)

| Gördüğünüz durum                                      | Kontrol edilecekler                                                                                                                                 |
| ----------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `401 invalid_api_key`                                 | Python'un kullandığı ortamda geçerli bir test anahtarı ayarlayın. Anahtarı iptal ettiyseniz aynı modda yenisini oluşturun.                          |
| `415 unsupported_media_type` veya `422 invalid_image` | Orijinal dosyayı açıp gerçek biçimini ve piksel boyutlarını kontrol edin. Düzeltilen dosyayı yeni bir anahtarla gönderin.                           |
| Dönüşüm kimliğinden sonra `processing_failed`         | API dönüşüm kaydını oluşturdu, ancak görsel vektörleştirilemedi. Kaynağı inceleyip düzeltilen dosyayı yeni işlem olarak gönderin.                   |
| `409 idempotency_conflict`                            | Aynı anahtar farklı bayt veya seçeneklerle kullanılmıştır. Mevcut sonucu almak için orijinal dosyayı kullanın veya yeni girdiye yeni anahtar verin. |

Desteğe başvurmanız gerekirse hata iletisindeki istek kimliğini veya betiğin yazdığı dönüşüm kimliğini saklayın. [API hata kılavuzu](https://perfectvector.com/docs/api/errors) hangi hataların güvenle yeniden denenebileceğini açıklar.

## Sık sorulan sorular

### Python aynı betikle JPEG veya WebP vektörleştirebilir mi?

Evet. İlk bağımsız değişken olarak JPEG veya WebP dosyasını verin. Aynı dosya boyutu, boyut ve tek kare kuralları geçerlidir. Çıktı SVG uzantısı alır.

### Python örneğini tüm klasör için kullanabilir miyim?

Önce tek dosyayla yükleme ve indirmeyi doğrulayın. Klasör için her dosyanın anahtarını, dönüşüm kimliğini ve çıktı yolunu kalıcı kuyrukta kaydedin. PerfectVector varsayılan olarak hesap başına aynı anda bir canlı dönüşüme izin verir. Sonraki dosyayı göndermeden önce mevcut dönüşümün tamamlanmasını bekleyin. [PerfectVector API sınırları](https://perfectvector.com/docs/api/limits)

## Kaynaklar

1. [Requests — hızlı başlangıç](https://requests.readthedocs.io/en/latest/user/quickstart/) — Multipart dosyaları, zaman aşımları ve yanıt baytları.
2. [PerfectVector — test modu](https://perfectvector.com/docs/api/test-mode) — Yükleme sınırları, sabit test SVG'si ve test kredileri.
3. [PerfectVector — bekleme ve eşzamansız istekler](https://perfectvector.com/docs/api/waiting-and-async) — Sunucu bekleme tercihi, durum sorgusu ve test isteğinin tamamlanması.
4. [PerfectVector — idempotency](https://perfectvector.com/docs/api/idempotency) — Anahtar ömrü, kapsamı, çakışmalar ve tekrarlar.
5. [PerfectVector — sonuçlar](https://perfectvector.com/docs/api/results) — Sonuç uç noktası, kimlik doğrulama ve geçerlilik süresi.
6. [PerfectVector — hatalar](https://perfectvector.com/docs/api/errors) — HTTP sorun kodları ve kurtarma adımları.
7. [PerfectVector — sınırlar](https://perfectvector.com/docs/api/limits) — Varsayılan eşzamanlı canlı işlem sınırı ve dosya kuralları.

***

[PerfectVector API sayfasından bir test anahtarı alın](https://perfectvector.com/tr/api) ve betiği kendi görsellerinizden biriyle çalıştırın. Kaydedilen SVG'nin açıldığını ve terminalde dönüşüm kimliğinin yazıldığını kontrol edin.

## Explore

- [Read the HTML article](https://perfectvector.com/tr/blog/vectorize-image-python-api)
- [En iyi AI görüntü vektörleştiricileri 2026: kullanıma göre](https://perfectvector.com/tr/blog/best-ai-vectorizers-2026.md)
- [Claude Code ile bir klasördeki görselleri SVG'ye çevirme](https://perfectvector.com/tr/blog/batch-vectorize-images-claude-code-mcp.md)
- [Product facts](https://perfectvector.com/product-facts.md)
- [FAQ](https://perfectvector.com/faq.md)
- [Pricing and credits](https://perfectvector.com/pricing.md)
