apache — проблема с отображением PNG библиотеки Php GD

У меня есть скрипт загрузки библиотеки GD, который обрабатывает и изменяет размеры изображений. После загрузки PNG-файлы получают рендеринг как другое изображение, похожее на изображение, на стороне браузера, но при открытии на диске они выглядят правильно. Я повторно сохранил затронутые png-файлы в photoshop и загрузил напрямую, это устраняет проблему с отображением, но когда я загружаю это изображение с помощью сценария, проблема с отображением возвращается, поэтому кодировка сценария, похоже, вызывает проблемы с отображением в браузере, но почему я не знаю

Средой размещения является Hetzner Server.
Загрузить образец:

//resize images
protected function resize($img, $w, $h, $newfilename) {
//Check if GD extension is loaded
if (!extension_loaded('gd') && !extension_loaded('gd2')) {
trigger_error("GD is not loaded", E_USER_WARNING);
return false;
}

//Get Image size info
$imgInfo = getimagesize($img);

switch ($imgInfo[2]) {
case 1: $im = imagecreatefromgif($img); break;
case 2: $im = imagecreatefromjpeg($img);  break;
case 3: $im = imagecreatefrompng($img); break;
default:  trigger_error('Unsupported filetype!', E_USER_WARNING);  break;
}

//If image dimension is smaller, do not resize
if ($imgInfo[0] <= $w && $imgInfo[1] <= $h) {
$nHeight = $imgInfo[1];
$nWidth = $imgInfo[0];
}
else{
// yeah, resize it, but keep it proportional
if ($w/$imgInfo[0] > $h/$imgInfo[1]) {
$nWidth = $imgInfo[0]*($h/$imgInfo[1]);
$nHeight = $h;
}
else{
$nWidth = $w;
$nHeight = $imgInfo[1]*($w/$imgInfo[0]);
}
}

$nWidth = round($nWidth);
$nHeight = round($nHeight);
$newImg = imagecreatetruecolor($nWidth, $nHeight);

/* Check if this image is PNG or GIF, then set if Transparent*/
if(($imgInfo[2] == 1) OR ($imgInfo[2]==3)){
imagealphablending($newImg, false);
imagesavealpha($newImg,true);
$transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);
imagefilledrectangle($newImg, 0, 0, $nWidth, $nHeight, $transparent);
}
imagecopyresampled($newImg, $im, 0, 0, 0, 0, $nWidth, $nHeight, $imgInfo[0], $imgInfo[1]);

//Generate the file, and rename it to $newfilename
switch ($imgInfo[2]) {
case 1: imagegif($newImg,$newfilename); break;
case 2: imagejpeg($newImg,$newfilename,100);  break;
case 3: imagepng($newImg,$newfilename,0); break;
default:  trigger_error('Failed resize image!', E_USER_WARNING);  break;
}
return $newfilename;
}

Может кто-нибудь дать мне некоторое представление об этом. Предоставит больше информации при необходимости. Ty

РЕДАКТИРОВАТЬ:
Дисплей браузера
Дисплей диска

Я понятия не имею, откуда приходит это изображение, оно загружается несколько раз, при просмотре полного пути к изображению в браузере появляется одно и то же изображение, поэтому это не проблема пути.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector