PNG optimizasyon araçları

4 Cevap php

Bir süre önce (Sanırım) "it Smush" adlı bir PNG optimizasyon hizmeti kullanılır. Bunu bir web bağlantılarımızdan beslenen ve iyi, smushed, güzel kendi filesizes tüm PNG görüntüleri zip döndü ...

Benim web sitesi resim yükleme işleminin bir parçası olarak benzer bir optimizasyon özelliği uygulamak istiyorum; Herkes bu için içine dokunabilirsiniz önceden varolan kitaplığa (PHP veya Python tercihen) biliyor mu? Kısa bir Google birkaç komut satırı tarzı araçları doğru beni işaret etti, ama mümkünse ben daha ziyade bu rota aşağı gitmek istemiyorum.

4 Cevap

Bu komut satırı araçları PHP ile yürütmek

  pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB -brute -l 9 -max -reduce -m 0 -q IMAGE
  optipng -o7 -q pngout.png
  pngout pngout.png -q -y -k0 -s0
  advpng -z -4 pngout.png > /dev/null

Sürece PHP (oldukça yaygın günümüzde) GD2 desteği ile derlenmiş gibi:

<?php
$image = imagecreatefromstring(file_get_contents('/path/to/image.original.png'));
imagepng($image, '/path/to/image.smushed.png', 9);

Bu herhangi bir görüntü GD2 anlar biçimi (sadece PNG) ve çıkış kaliteden ödün vermeden maksimum sıkıştırma seviyesi olarak gzip'li bir PNG okuyacak.

Gerçi daha yıllar önce az kullanım bugün olabilir; Gzip Sıkıştırma eskisi gibi CPU-bilge kadar mal olmaz çünkü çoğu görüntü editörleri zaten bunu.

Eğer Pngcrush duydunuz? Sen kaynak, PNG and MNG Tools at SourceForge bölümünü kontrol ve uyarlamak veya Python sarın olabilir.

Ben (GAMA ve ICCP gibi) diğer parçalarını atmadan bilgeliği soru olurdu, ama bu yapmak istediğiniz buysa o PyPNG parçalarını kaldırmak için kullanmak oldukça kolaydır:

#!/usr/bin/env python
import png
import sys

input=sys.stdin
out=sys.stdout

def critical_chunks(chunks):
    for type,data in chunks:
        if type[0].isupper():
            yield type,data

chunks = png.Reader(file=input).chunks()
png.write_chunks(out, critical_chunks(chunks))

critical_chunks fonksiyon esas (kritik bir yığın için 4 harfli tip büyük harfle başlar) kritik PNG parçalar ama tüm filtre edilir.