Sono stato incuriosito da this discussion di ridimensionamento delle immagini e successivamente ho scoperto che il codice PHP che sto usando per creare miniature dalle immagini caricate soffre dello stesso problema. Ho deciso di provare la correzione PHP postata in basso (convertendo la gamma da 2.2 a 1.0, ridimensionando l'immagine, convertendo la gamma da 1.0 a 2.2). Questo funziona per risolvere il problema indicato nell'articolo, tuttavia questa modifica al codice ha lo sfortunato effetto collaterale di eliminare la trasparenza del canale alfa PNG.PHP GD2: come mantenere la trasparenza del canale alfa e correggere gamma
Ecco il codice che ho con la correzione della gamma in atto.
<?php
$image = imagecreatefrompng($source_file);
$resized_image = imagecreatetruecolor($new_width, $new_height);
imagealphablending($resized_image, false);
imagesavealpha($resized_image, true);
imagegammacorrect($image, 2.2, 1.0);
imagecopyresampled($resized_image, $image, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height);
imagegammacorrect($resized_image, 1.0, 2.2);
imagepng($resized_image, $dest_file);
?>
Qualcuno sa come ridimensionare l'immagine, che impiega la correzione trucco gamma, pur mantenendo la trasparenza canale alfa dell'immagine originale?
Modifica
immagini di esempio:
- file originale - PNG con trasparenza canale alfa
- di file ridimensionato con entrambe le imagegammacorrect chiamate di funzione() commentate
- file di ridimensionamento sia con imagegammacorrect() chiamate di funzione sul posto
Si può vedere che La trasparenza è buona fino a quando non si tenta di correggere la gamma. (Modo più semplice per vedere la trasparenza sta lavorando sotto è per ispezionare il tag di paragrafo avvolto intorno alle immagini e aggiungere uno sfondo:. Nero; al suo attributo di stile tramite Firebug o simili)
original image http://ender.hosting.emarketsouth.com/images/test-image.png no gamma correction http://ender.hosting.emarketsouth.com/images/test-image-resized-no-gamma.png gamma corrected - no transparency http://ender.hosting.emarketsouth.com/images/test-image-resized.png
interessante, dovrò passare un po 'di tempo con questo domani quando torno in ufficio :) –
ha avuto un piccolo refactoring da fare per combinare questo con il mio codice esistente, ma alla fine funziona benissimo. Molto apprezzato! –