Domanda

Ho un problema con imagecopyresampled per buffer che utilizzano valori alfa. Apparentemente l'algoritmo premultaplica i pixel Valori alfa Prima del filtraggio, questo risulta in Black Borders Arround Objects.

Passi per riprodurre:

    .
  • Prendi un'immagine completamente bianca nella parte RGB e che ha un cerchio bianco (antialiasato !!) (vai con un cerchio, non con un quadrato!) su sfondo nero nella parte alfa (così il La parte alfa avrà pixel per lo più totalmente bianchi e totalmente neri, così come alcuni pixel di gradiente sui confini del cerchio a causa dell'antiliasing - questo significa che l'immagine di input non è premultalmente - è dritta / non amata, perché la parte RGB dell'immagine è completamente bianco).

  • Scaledown l'immagine di metà usando imageCopySampled

  • Componi il risultato su un'immagine completamente bianca

    Cosa mi aspetto: Immagine completamente bianca

    Cosa ottengo: Un confine grigiastro arround il contorno del cerchio

    Sono abbastanza sicuro che ciò sia dovuto a algoritmo Premultalled all'interno dell'algoritmo Scaledown (l'algoritmo moltiplica il valore alfa pixel con il suo valore RGB per calcolare il nuovo valore RGB - quindi i pixel bianchi diventano grigi)

    Qualcuno conosce un workerround per questo?

È stato utile?

Soluzione

Suggerirei di provare l'immagine Magick per PHP.

http://www.php.net/manual/en/imagick.resizeImage.php

http://www.php.net/manual/en/imagick.scalaMage.php

Nella mia esperienza tutti i problemi riguardanti l'imaging in PHP vanno via.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top