У меня есть сценарий загрузки изображений, а миниатюры, которые его продюсируют, обновлены и имеют низкое качество.
Я не уверен, какая конкретная функция в скрипте изменяет это настолько плохое сообщение.
if (isset($_POST['submitted'])) { $idir = "images/"; // Path To Images Directory $tdir = "images/"; // Path To Thumbnails Directory $twidth = "300"; // Maximum Width For Thumbnail Images $theight = "100"; // Maximum Height For Thumbnail Images if($_FILES["imagefile"]["size"] >= 2120000) { echo "Too Big"; die(); } else { $imageData = @getimagesize($_FILES["imagefile"]["tmp_name"]); if($imageData === FALSE || !($imageData[2] == IMAGETYPE_GIF || $imageData[2] == IMAGETYPE_JPEG || $imageData[2] == IMAGETYPE_PNG)) { echo "Image Must Be GIF, JPG, or PNG"; die(); } } $url = $_FILES['imagefile']['name']; // Set $url To Equal The Filename For Later Use if ($_FILES['imagefile']['type'] == "image/jpg" || $_FILES['imagefile']['type'] == "image/jpeg" || $_FILES['imagefile']['type'] == "image/pjpeg" || $_FILES['imagefile']['type'] == "image/png" || $_FILES['imagefile']['type'] == "image/gif") { $file_ext = strrchr($_FILES['imagefile']['name'], '.'); // Get The File Extention In The Format Of , For Instance, .jpg, .gif or .php $saltdate = date( 'U' ); $saltuser = $_SERVER[REMOTE_ADDR]; $saltname = md5($saltdate.$saltuser); $copy = copy($_FILES['imagefile']['tmp_name'], "$idir" . "$saltname" . "$file_ext"); // Move Image From Temporary Location To Permanent Location if ($copy) { // If The Script Was Able To Copy The Image To It's Permanent Location $cfunction = 'imagecreatefromjpeg'; if ($_FILES['imagefile']['type'] == "image/png") { $cfunction = 'imagecreatefrompng'; } else if ($_FILES['imagefile']['type'] == "image/gif") { $cfunction = 'imagecreatefromgif'; } $simg = $cfunction("$idir" . "$saltname" . "$file_ext"); // Make A New Temporary Image To Create The Thumbanil From $currwidth = imagesx($simg); // Current Image Width $currheight = imagesy($simg); // Current Image Height if ($currheight > $currwidth) { // If Height Is Greater Than Width $zoom = $twidth / $currheight; // Length Ratio For Width $newheight = $theight; // Height Is Equal To Max Height $newwidth = $currwidth * $zoom; // Creates The New Width } else { // Otherwise, Assume Width Is Greater Than Height (Will Produce Same Result If Width Is Equal To Height) $zoom = $twidth / $currwidth; // Length Ratio For Height $newwidth = $twidth; // Width Is Equal To Max Width $newheight = $currheight * $zoom; // Creates The New Height } $dimg = imagecreate($newwidth, $newheight); // Make New Image For Thumbnail imagetruecolortopalette($simg, false, 256); // Create New Color Pallete $palsize = ImageColorsTotal($simg); for ($i = 0; $i < $palsize; $i++) { // Counting Colors In The Image $colors = ImageColorsForIndex($simg, $i); // Number Of Colors Used ImageColorAllocate($dimg, $colors['red'], $colors['green'], $colors['blue']); // Tell The Server What Colors This Image Will Use } imagecopyresized($dimg, $simg, 0, 0, 0, 0, $newwidth, $newheight, $currwidth, $currheight); // Copy Resized Image To The New Image (So We Can Save It) imagejpeg($dimg, "$tdir" . "thumb_" . $saltname . "$file_ext"); // Saving The Image $full = "$saltname" . "$file_ext"; $thumb = "thumb_" . "$saltname" . "$file_ext"; imagedestroy($simg); // Destroying The Temporary Image imagedestroy($dimg); // Destroying The Other Temporary Image } else { } } else { } echo "<img src=images/$thumb>"; }
Любая идея, что я могу изменить, чтобы улучшить качество фотографий, чтобы они не вносились в постель?
На самом деле не читал ваш код, бюст отсканировал его для типичной игры:
Не используйте imagecopyresized ().
Вместо этого используйте imagecopyresampled ()
imagetruecolortopalette($simg, false, 256);
конвертирует изображение truecolor в изображение палитры с максимум 256 цветами. Поскольку вы сохраняете в JPEG впоследствии, эта строка кажется довольно бессмысленной. Наряду с циклом for
следующим за ним. Ну, весь этот блок, действительно:
imagetruecolortopalette($simg, false, 256); // Create New Color Pallete $palsize = ImageColorsTotal($simg); for ($i = 0; $i < $palsize; $i++) { // Counting Colors In The Image $colors = ImageColorsForIndex($simg, $i); // Number Of Colors Used ImageColorAllocate($dimg, $colors['red'], $colors['green'], $colors['blue']); // Tell The Server What Colors This Image Will Use }