Otomatik olarak uyum ve PHP ile küçük bir görüntü içine 3 görüntüleri yeniden boyutlandırmak?

3 Cevap php

Bu PHP ile bile mümkün olup olmadığını bilmiyorum, ama eğer, burada biri nasıl bilecek düşündüm. Ben şu anda kullanıcıların sitede kullanılacak bir tam vücut ana avatar özelleştirebilirsiniz bir proje üzerinde çalışıyorum. Farklı bir yüz, saç, vb kendi özel avatar yapmak için seçilebilir şeffaf png görüntüleri bir demet vardır. Ben bu büyük çalışma var, ama burada zor bir parçasıdır. Ben (erkek ise) yüz, saç, sakal ve kullanmak, otomatik vb forum için kendi küçük avatar olarak kullanılacak bir 80x80 görüntü oluşturmak için mümkün olmak istiyorum

Bu birkaç engel var. İlk olarak, tüm görüntüleri (, karakter beden imajı görüntüleri istifleme elde edilir resmin büyük miktarda şeffaf, öylesine bir yüz görüntüsü aslında o kadar büyük değil) 187x404 vardır. Bu çalışması için, görüntüleri etkili ekstra alan tüm çıkarıldı, böylece otomatik olarak kırpılmış olması gerekir ve gerçek yüz, saç, sakal veya parça 80x80 nokta gösterdi.

İkinci sorun saç veya sakal (tam boyutlu yüz görüntüsü üzerinde yerleştirildiğinde) bazı 80x80 geçmiş uzatmak istiyorum ve kapalı kıyılmış olmasıdır. Yani görüntü tam boyutunda biraradaydı, ve sonra 80x80 sığacak şekilde yeniden gerekir.

Ben (http://stackoverflow.com/questions/1397377/combine-2-3-transparent-png-images-on-top-of-each-other-with-php) içine 3 görüntüleri birleştirerek temel yolu biliyorum, ama bu kadarıyla kazanılmış ettik gibidir. Ben deli değilim ve bu mümkün değilse o zaman bana söyle. Herhalde şekilde bu overcomplicating ediyorum, bu yüzden görmek ve tabii ki bu ulaşmanın daha kolay bir yolu varsa, bunu duymak isterim.

3 Cevap

Kolay yolu sadece her görüntünün aynı bölgede yüz / saç / sakal uygun etmektir. Sonra sadece o bölgeyi kırpmak.

Eğer gerekiyorsa, sen must küçük avatar görünür olması görüntüdeki bir dikdörtgen belirterek, her görüntü için ekstra verileri saklayabilirsiniz. Sonra tüm yazmanızı görüntüleri ve ekin bu dikdörtgenler maksimum ekstremitelerde almak + küçük avatar boyutuna aşağı küçültmek.

(-> 80x80 örneğin 83x83) esasen özellikle tanımlı kenarları birçok görüntüler için, kalitesini azaltabilir Ancak, birkaç piksel PNG görüntüleri yeniden boyutlandırma unutmayın. Birçok piksel [neredeyse] eşit orijinal görüntüden ve bu bulanıklık neden keskin kenarlı görüntüler 4 piksel arasındaki bölünmüş yeni görüntüde vardır çünkü bu.

Yani, bir portre uyması için görüntüyü küçülen sadece zor değil, aynı zamanda kalitesini düşürür. Ben yerine sakal keserdim!

Ben, kırpma, yeniden boyutlandırma veya her ikisi (daha büyük bir kare kırpma ve yeniden boyutlandırma) bir kombinasyonu, ilk karar vermeniz gerekir düşünüyorum.

Zaten tek bir birleşik görüntüleri varsa Neyse, her üç seçenek php yapmak kolaydır. imagecopyresampled() bir göz atın.

Ben bu basitleştirerek olabilir, ama deneyebilirsiniz:

  1. Max yüz boyutlarına ön kompozisyon takip edin.

  2. Geçici bir dosyaya çıktı kompozit görüntü.

  3. 1. adımdan itibaren büyük değerler mahsul kare

  4. 80 x 80 kırpılmış bir görüntü kısmını yeniden boyutlandırma