Ana içeriğe geç

Görsel ve video dönüşümleri

TEBHOS görselleri yeniden boyutlandırır ve dönüştürür, animasyonu korur ya da kaldırır ve bir videodan durağan bir görsel çıkarır. Görsel varlık yolları ile depolanmış nesne yolu tek bir dönüşüm motorunu paylaşır. Medya vekilindeki imzalı harici medya yolunun ise bu sayfanın sonunda açıklanan, daha küçük ve ayrı bir kümesi vardır.

Dönüşüm ne zaman çalışır

Görsel varlık isteği her zaman motordan geçer, çünkü hiçbir parametre verilmese bile varsayılan 128 size değeri uygulanır. Depolanmış nesne isteği ise size, width, height, format veya animated=false belirttiğinde ya da biçim Accept üzerinden belirlendiğinde motordan geçer.

Motor, aşağıdakilerin tümü sağlandığında özgün baytları değiştirmeden döndürür:

  • çözümlenen boyut en az kaynak boyutları kadardır (görseller hiçbir zaman büyütülmez),
  • çözümlenen biçim kaynak biçimle aynıdır ve
  • kaynak animasyonlu değildir ya da animasyon istenmiştir.

Yalnızca PNG, JPEG, GIF ve WebP kaynaklar dönüştürülür. Motor hiçbir şeyi kanonik hâle getirmez ve yönlendirme yapmaz; bu nedenle aynı seçimin iki yazımı (?size=60 ve ?size=64), aynı görseli üretseler bile iki ayrı HTTP önbellek girdisidir.

Gösterim parametreleri

Alan Yollar Açıklama
size? Görsel varlık, depolanmış nesne İstenen kare kenar uzunluğu, bkz. Varlık boyutu seçimi
width? Depolanmış nesne En büyük çıktı genişliği
height? Depolanmış nesne En büyük çıktı yüksekliği
format? Depolanmış nesne Çıktı biçimi: webp, png, jpg, jpeg veya gif. Görsel varlık yollarında biçim bunun yerine yol uzantısından gelir
animated? Görsel varlık, depolanmış nesne true veya 1 animasyonu korur, false veya 0 ilk kareyi döndürür. Büyük/küçük harf duyarsız eşleşir

Depolanmış nesne yolunda size önceliklidir: bulunduğunda width ve height yok sayılır.

TEBHOS'ta desteklenmez

quality, effort, download veya fmt parametresi, AVIF çıktısı ve kaplayacak şekilde kırpma yoktur. Bilinmeyen parametreler yok sayılır.

İzin verilen boyutlar

İstenen her boyut, sabit bir basamak dizisinde en az onun kadar büyük olan ilk basamağa yukarı yuvarlanır:

16, 20, 22, 24, 28, 32, 40, 44, 48, 56, 60, 64, 80, 96, 100, 128, 160, 240, 256, 300, 320, 480, 512, 600, 640, 1024, 1280, 1536, 2048, 3072, 4096, 8192, 16384

Dolayısıyla size=641 1024'ü seçer, 16384'ün üzerindeki bir istek ise 16384'ü seçer. Sonuç daha sonra Varlık boyutu seçimi bölümündeki boyut sınıfına göre sıkıştırılır. Görüntülediğiniz boyutu cihaz piksel oranıyla çarparak isteyin; yuvarlama size hiçbir zaman istediğinizden daha az piksel vermez.

Geometri

Dönüşümler bir görseli hiçbir zaman büyütmez ve en-boy oranını her zaman korur. Çıktı, istenen kutuya sığan en büyük görseldir:

  • Görsel varlık isteği görseli size × size bir kareye sığdırır.
  • Depolanmış nesne isteği onu size × size içine ya da yalnızca bunlar verildiğinde width × height içine sığdırır. Yalnızca width (veya yalnızca height) verildiğinde diğer boyut sınırlanmaz.

Kırpma yapılmaz. Durağan görseller Catmull-Rom filtresiyle, animasyon kareleri üçgen filtresiyle yeniden boyutlandırılır.

Durağan çıktıda kaynağın EXIF yönlendirmesi yeniden boyutlandırmadan önce piksellere uygulanır; böylece yeniden kodlanan görsel hiçbir EXIF verisi taşımasa da telefonlarla çekilen fotoğraflar dik görünür.

Varlık boyutu seçimi

İstenen değer basamak dizisine yuvarlanır ve ardından varlığın boyut sınıfının aralığına sıkıştırılır.

Boyut sınıfı Uygulandığı yer Aralık
Simge avatars, server-icons ve avatars/, server-icons/ ya da group-dm-icons/ ile başlayan /files/ anahtarları 128 ile 1024 arası
Afiş banners, server-banners, server-invite-bg, server-embed-bg, live-room-banners ve bu adlarla başlayan /files/ anahtarları 480 ile 2400 arası
Emoji emojis/ ile başlayan /files/ anahtarları 32 ile 512 arası
Çıkartma stickers/ ile başlayan /files/ anahtarları 128 ile 512 arası
Diğer Ekler dahil diğer tüm /files/ anahtarları En fazla 4096, alt sınır yok

size içermeyen bir görsel varlık isteği sıkıştırmadan önce 128'e çözümlenir; bu nedenle bir avatar veya sunucu simgesi varsayılan olarak 128, bir afiş ise 480 olur. Bir sınıfın alt sınırının altındaki her basamak değeri o alt sınıra, üst sınırının üzerindeki her değer o üst sınıra indirgenir; 2400'lük afiş üst sınırı bir basamak değeri değildir ve yalnızca sıkıştırmayla elde edilebilir.

Küçük simgeler 128 olarak sunulur

Simge sınıfı 128'den başladığından, bir avatarda size=32 yine 128 px'lik bir görsel (ya da daha küçükse özgün görseli) döndürür. İstemcide küçültün.

Biçimler

Çıktı Kodlama
WebP Kayıplı, kalite 85. Animasyonlu WebP kalite 80 kullanır ve sonsuz döngüde oynar
PNG Kayıpsız; kaynağın renk türü korunur
JPEG Kalite 88. JPEG'de alfa kanalı olmadığından saydam pikseller beyaz üzerine birleştirilir
GIF Paletli GIF; animasyonlu GIF sonsuz döngüde oynar

Görsel varlık yollarında çıktıyı yol uzantısı seçer: webp, png, jpg/jpeg veya gif. Uzantısı olmayan bir URL depolanmış biçimi korur. Depolanmış nesne yolunda çıktı sırasıyla format parametresi, ardından Accept belirlemesi, ardından depolanmış biçimdir.

Animasyon

GIF, animasyonlu WebP ve animasyonlu PNG (APNG) kaynaklar animasyonlu olarak tanınır. Animasyonlu yüklemelerin varlık karmaları a_ önekini taşır.

Durum Sonuç
Animasyon istendi ve çıktı WebP veya GIF Her kare yeniden boyutlandırılır ve yeniden kodlanır; kare gecikmeleri korunur, alt sınır 20 ms'dir
Animasyon istendi ve çıktı PNG veya JPEG Durağan görsel olarak ilk kare
animated=false Durağan görsel olarak ilk kare

Varsayılan: görsel varlık yollarında yalnızca karma a_ ile başlıyorsa animasyonlu; depolanmış nesne yolunda animasyonlu.

Özgün gösterimler

Aşağıdaki durumlarda özgün depolanmış baytlar kendi içerik türleriyle döndürülür:

İkinci durumda yanıt, ne istenmiş olursa olsun kaynağın boyutunda ve biçimindedir.

Dönüşüm sınırları

Sınır Değer Aşıldığında etkisi
Tek bir karedeki piksel sayısı 64,000,000 Özgün baytlar döndürülür
Bir animasyonun tüm karelerindeki toplam piksel 50,000,000 Özgün baytlar döndürülür
Bir animasyondaki kare sayısı 1000 Özgün baytlar döndürülür
Adlandırılmış boyut sınıfları dışındaki anahtarlar için en büyük kenar 4096 İstenen boyut sıkıştırılır

Görsel olarak tanınan ancak kodu çözülemeyen veya kodlanamayan bir kaynak 422 döndürür, bkz. Yanıtlar ve sınırlar.

İmzalı harici dönüşümler

Medya vekilindeki imzalı harici medya yolu yalnızca format=webp verildiğinde dönüşüm yapar. Bu durumda kaynağın içerik türüne göre davranır:

Kaynak içerik Koşul Sonuç
Durağan görsel (GIF değil, SVG değil) width veya height verilmiş width × height içine sığan en büyük boyuta ölçeklenir (her biri 4096 ile sınırlı, eksik olan 4096 kabul edilir), en-boy oranı korunur ve WebP olarak kodlanır. Medya yollarından farklı olarak bu, daha küçük bir kaynağı büyütebilir
Durağan görsel Ne width ne height Değiştirilmeden geçirilir
GIF Her zaman Animasyonlu WebP'ye (kalite 60) dönüştürülür. Genişlik, verildiyse width olur; hiçbir zaman kaynaktan büyük ve 1024'ün üzerinde değildir; yükseklik en-boy oranını izler
Video Her zaman İlk karenin WebP biçiminde durağan bir kapak görseli, width piksel genişliğinde (varsayılan 480, 16–1280 aralığına sıkıştırılır)
SVG, ses, diğer her şey Her zaman Değiştirilmeden geçirilir

format=webp olmadan width ve height yok sayılır ve kaynak baytları doğrudan akıtılır. Dönüştürülebilmesi için kaynak gövdesinin tamamı boyut sınırına sığmalıdır.