Sto cercando di utilizzare l'algoritmo di compressione pngquant per comprimere le immagini PNG al volo utilizzando WAMP. Forniscono un PHP example che (penso) dovrebbe utilizzare lo command line binary for Windows, che ho inserito nella cartella system32
e posso accedere da qualsiasi punto della riga di comando.esempio PHP pngquant non funziona
Ho preso il loro esempio e tracciato il problema alla linea $compressed_png_content = shell_exec("pngquant --quality=$min_quality-$max_quality - < ".escapeshellarg( $path_to_png_file));
. L'ho semplificato in var_dump(shell_exec('pngquant - < test.png'));
ma emette solo i primi 5 caratteri anche se passthru('pngquant - < test.png');
sembra inviare l'output corretto all'utente come stringa. exec('pngquant - < test.png',$output); var_dump($output);
sembra anche catturare l'output corretto ma in una forma di array, che non so davvero come convertire in un file immagine. Voglio acquisire l'output in una variabile in modo da poter utilizzare ulteriori algoritmi di compressione e manipolazioni e inviarlo all'utente come file scaricabile.
Ho letto su diferences between system() vs exec() vs shell_exec() vs passthru() vs proc_open() vs popen(). Shell_exec() sembra essere la scelta corretta, tuttavia su php.net si dice che shell_exec()'s emette una stringa. Potrebbe essere un problema? Come posso catturare correttamente l'output del comando pngquant - < test.png
in una variabile?
Solo dicendo, le immagini PNG sono già molto compresse. Ma ancora, una domanda riveduta +1. – Xorifelse
Sono un web designer. La maggior parte dei miei PNG e dei PNG di altri designer con cui lavoro possono essere compressi dal 40% al 70% senza alcun deterioramento visivamente osservabile utilizzando questo algoritmo. Penso che ne valga la pena :) –
Ti è venuta in mente una soluzione? – sanjihan