it-swarm.com.de

Ändern der Größe von PNG transparent mit JImage, endgültige Datei nicht kopiert

Ich verwende JImage, um die Größe von hochgeladenen Bildern zu ändern. Wenn ich jedoch versuche, die Größe von transparentem PNG zu ändern, wird das resultierende Bild nicht in das Verzeichnis kopiert. Ich kann das Problem nicht verstehen. Die toFile () -Methode kopiert das transparente PNG nicht in das Verzeichnis, es funktioniert gut mit JPG und PNG ohne Transparenz.

Der Code, den ich benutze, ist der folgende:

$image = new JImage($originalFile);
$properties = JImage::getImageFileProperties($originalFile);
$resizedImage = $image->resize('200', '200', true);

$mime = $properties->mime;

if ($mime == 'image/jpeg')
{
    $type = IMAGETYPE_JPEG;
}
elseif ($mime = 'image/png')
{
    $type = IMAGETYPE_PNG;
}
elseif ($mime = 'image/gif')
{
    $type = IMAGETYPE_GIF;
}

$resizedImage->toFile($finalFile, $type);

Irgendwelche Ideen, wie es mit transparentem PNG funktioniert?

2
user3533235

Wenn Sie sich die JImage-Implementierung ansehen, werden keine Aufrufe von imagealphablending und anderen Routinen verfügbar gemacht, die normalerweise für die Verarbeitung transparenter Bilder verwendet werden. Bei der Implementierung von resize() und crop() scheint es sich jedoch um die Transparenz selbst zu handeln. Wenn Sie also Joomla 3.x verwenden, sollte der Code bereits mit transparenten Bildern funktionieren.

Wenn Sie einen Anwendungsfall haben, in dem dies nicht funktioniert, und Sie nicht versuchen, von oder nach jpg zu konvertieren (was Transparenz natürlich überhaupt nicht unterstützt), fügen Sie hier einfach weitere Informationen hinzu .

Ich könnte darauf hinweisen, dass das Problem möglicherweise bei den offensichtlichen Fehlern in Ihrem Code liegt:

elseif ($mime = 'image/png')

sie scheinen ein "=" anstelle von zwei "==" zu verwenden

1
Riccardo Zorn