Domanda

Bene Sto utilizzando il seguente codice di prendere qualsiasi immagine vecchia in una miniatura 160x120, il problema è se c'è troppo pieno lo sfondo è sempre nero. Ho curiosare in giro i documenti PHP, ma nessuna di queste funzioni sembrano avere alcun tipo di parametri di colore. Tutte le idee o puntatori sarebbe grande!

$original = 'original_image.jpg';
$thumbnail = 'output_thumbnail.jpg';

list($width,$height) = getimagesize($original);
$width_ratio = 160 / $width;
if ($height * $width_ratio <= 120)
{
    $adjusted_width = 160;
    $adjusted_height = $height * $width_ratio;
}
else
{
    $height_ratio = 120 / $height;
    $adjusted_width = $width * $height_ratio;
    $adjusted_height = 120;
}
$image_p = imagecreatetruecolor(160,120);
$image = imagecreatefromjpeg($original);
imagecopyresampled($image_p,$image,ceil((160 - $adjusted_width) / 2),ceil((120 - $adjusted_height) / 2),0,0,ceil($adjusted_width),ceil($adjusted_height),$width,$height);
imagejpeg($image_p,$thumbnail,100);

Anche se siete poco chiaro quello che voglio dire, prendere questa immagine e ritengono che il testo era originariamente solo rosso su sfondo bianco

È stato utile?

Soluzione

Il href="http://www.php.net/imagecreatetruecolor" rel="nofollow noreferrer"> funzione crea una tela nera.

Utilizzare la funzione imagefill di dipingere di bianco ...

Altri suggerimenti

Aggiungi questo prima di copiare l'originale nel nuovo:

$white = ImageColorAllocate($image_p, 255, 255, 255); 
ImageFillToBorder($image_p, 0, 0, $white, $white);

EDIT:

In realtà, io non conoscevo imagefill. . .

$white = imagecolorallocate($image_p, 255, 255, 255); 
imagefill($image_p, 0, 0, $white);

non lo uso imagecreatetruecolor invece imagecreate, penso che sarebbe risolvere

scroll top