& Quot; FancyResize & Quot; PHP скрипт — уничтожает изображения

У меня есть скрипт со старого сайта под названием FancyResize, который изменяет размеры изображений до новых запрошенных ширины и высоты. По какой-то причине он теперь «уничтожает» изображения при использовании — не каждый раз, но во многих случаях он создает странное наложение цветов, изменяет пиксели и т. Д., Поэтому невозможно увидеть, каким изображением это на самом деле должно было быть. Я думаю, что это может быть связано с новой версией PHP и т. Д., Но я не знаю, но я думаю, что это работало раньше.

Итак, мой вопрос: кто-нибудь может увидеть ошибку в этом?

<?
$new_width = $_REQUEST[w];
$new_height = $_REQUEST[h];
$file = $_REQUEST[i];$localpath = "WEBSITENAME";

$query = $_SERVER[QUERY_STRING];
$datafile = $_SERVER[DOCUMENT_ROOT].'/img/fronttemp/'.md5($query);

if (file_exists($datafile))
{
header("Content-type: image/jpeg");
die(file_get_contents($datafile));
}

if (substr($file, 0, strlen($localpath)) == $localpath)
{
$file = substr($file, strlen($localpath));
$file = $_SERVER[DOCUMENT_ROOT].$file;
}
else
{

$file = substr($query, strpos($query, "&i=")+3);
}

$image = imagecreatefromjpeg($file);
if (!$image)
{
$image =imagecreatefromgif($file);
$is_gif = true;
}
else $is_gif = false;

if (!$image) die("error reading gif/jpg $file");

$info = getimagesize($file) or die("error getting info");

$width = $info[0];
$height = $info[1];

$input_landscape = ($width/$height)>1;
$output_landscape = ($new_width/$new_height)>1;function imageScaleToWidth($image, $new_height, $new_width)
{
$width = imagesx($image);
$height = imagesy($image);

$scale_height = ceil(($new_width/$width)*$height);
$scaledimage = imagecreatetruecolor($new_width, $scale_height);

$white = imagecolorallocate($scaledimage, 255, 255, 255);
imagecolortransparent($dest, $scaledimage);

imagecopyresampled($scaledimage, $image, 0,0,0,0, $new_width, $scale_height, $width, $height);
return $scaledimage;
}

function imageScaleToHeight($image, $new_height, $new_width)
{
$width = imagesx($image);
$height = imagesy($image);

$scale_width = ceil(($new_height/$height)*$width);
$scaledimage = imagecreatetruecolor($scale_width, $new_height);

$white = imagecolorallocate($scaledimage, 255, 255, 255);
imagecolortransparent($dest, $scaledimage);imagecopyresampled($scaledimage, $image, 0,0,0,0, $scale_width, $new_height, $width, $height);
return $scaledimage;
}function makeImageWideEnough($image, $new_height, $new_width)
{
$width = imagesx($image);
$height = imagesy($image);

if ($width < $new_width)
{
$scale_height = ceil(($new_width/$width)*$height);
$scaledimage = imagecreatetruecolor($new_width, $scale_height);
imagecopyresampled($scaledimage, $image, 0,0,0,0, $new_width, $scale_height, $width, $height);
return $scaledimage;
}

return $image;
}

function makeImageHighEnough($image, $new_height, $new_width)
{
$width = imagesx($image);
$height = imagesy($image);

if ($height < $new_height)
{
$scale_width = ceil(($new_height/$height)*$width);
$scaledimage = imagecreatetruecolor($scale_width, $new_height);
imagecopyresampled($scaledimage, $image, 0,0,0,0, $scale_width, $new_height, $width, $height);
return $scaledimage;
}

return $image;
}

function imageCrop($image, $new_height, $new_width)
{
$width = imagesx($image);
$height = imagesy($image);

$croppedimage = imagecreatetruecolor($new_width, $new_height);

$sx = ($width-$new_width)/4;
$sy = ($height-$new_height)/4;
imagecopy($croppedimage, $image, 0, 0, $sx, $sy, $new_width, $new_height);
return $croppedimage;
}

function scaleWidth($image, $new_width)
{
$width = imagesx($image);
$height = imagesy($image);

$ratio = $new_width / $width;

$sx = ceil($width*$ratio);
$sy = ceil($height*$ratio);$scaledimage = imagecreatetruecolor($sx, $sy);

$white = imagecolorallocate($scaledimage, 255, 255, 255);
imagecolortransparent($dest, $scaledimage);imagecopyresampled($scaledimage, $image, 0,0,0,0, $sx, $sy, $width, $height);
return $scaledimage;
}$croppedimage = scaleWidth($image, $new_width);

if ($new_height < imagesy($croppedimage))
{
$croppedimage = imageCrop($croppedimage,$new_height,$new_width);
}

header("Content-type: image/jpeg");
imagejpeg($croppedimage, $datafile);
echo file_get_contents($datafile);
?>

0

Решение

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

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

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

По вопросам рекламы [email protected]