Я загружаю скриншоты продукта на свой сайт … Я хочу загрузить исходное изображение так, как оно есть, а также создать для него миниатюру, но после загрузки обоих файлов размер создаваемого миниатюры немного больше, чем ожидалось. Есть ли способ уменьшить размер файла эскиза без ущерба для качества в php или с помощью Imagemagick (который я понятия не имею, как использовать, но я хочу узнать, если это необходимо) …
Ниже приведен код, который я использую для загрузки файлов.
<form action="<?php echo $_server['php-self']; ?>" method="post" enctype="multipart/form-data" id="something" class="uniForm"> <input name="new_image" id="new_image" size="30" type="file" class="fileUpload" /> <button name="submit" type="submit" class="submitButton">Upload/Resize Image</button>
<?php if(isset($_POST['submit'])){ if (isset ($_FILES['new_image'])){ $imagename = $_FILES['new_image']['name']; $source = $_FILES['new_image']['tmp_name']; $target = "images/".$imagename; move_uploaded_file($source, $target); $imagepath = $imagename; $save = "images/" . $imagepath; //This is the new file you saving $file = "images/" . $imagepath; //This is the original file list($width, $height) = getimagesize($file) ; $tn = imagecreatetruecolor($width, $height) ; $image = imagecreatefromjpeg($file) ; imagecopyresampled($tn, $image, 0, 0, 0, 0, $width, $height, $width, $height) ; imagejpeg($tn, $save, 100) ; $save = "images/sml_" . $imagepath; //This is the new file you saving $file = "images/" . $imagepath; //This is the original file list($width, $height) = getimagesize($file) ; $modwidth = 130; $diff = $width / $modwidth; $modheight = 185; $tn = imagecreatetruecolor($modwidth, $modheight) ; $image = imagecreatefromjpeg($file) ; imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ; imagejpeg($tn, $save, 100) ; echo "Large image: <img src='images/".$imagepath."'><br>"; echo "Thumbnail: <img src='images/sml_".$imagepath."'>"; } } ?>
Просьба указать мне в правильном направлении … Спасибо
Не пропускайте 100 в качестве качества для imagejpeg () – что-то более 90, как правило, слишком велико, и вы получаете больше JPEG. Для эскиза попробуйте 75 и работайте вниз, пока не будет приемлемым соотношение качества и размера.
//try this imagejpeg($tn, $save, 75) ;
Привет @halocursed Я просто пытаюсь сжать, используя ваш код для другого типа изображения, например png и gif, чем изображение становится черным. Итак, я модифицирую блок кода и хорошо работаю для jpg, png.
<?php if(isset($_POST['submit'])){ if (isset ($_FILES['new_image'])){ // print_r($_FILES); die; $imagename = $_FILES['new_image']['name']; $source = $_FILES['new_image']['tmp_name']; $target = "images/".$imagename; move_uploaded_file($source, $target); $imagepath = $imagename; $save = "images/" . $imagepath; //This is the new file you saving $file = "images/" . $imagepath; //This is the original file list($width, $height) = getimagesize($file); $tn = imagecreatetruecolor($width, $height); //$image = imagecreatefromjpeg($file); $info = getimagesize($target); if ($info['mime'] == 'image/jpeg'){ $image = imagecreatefromjpeg($file); }elseif ($info['mime'] == 'image/gif'){ $image = imagecreatefromgif($file); }elseif ($info['mime'] == 'image/png'){ $image = imagecreatefrompng($file); } imagecopyresampled($tn, $image, 0, 0, 0, 0, $width, $height, $width, $height); imagejpeg($tn, $save, 60); echo "Large image: ".$imagepath; } } ?>
75 – это настройка качества по умолчанию, однако вы заметите значительное снижение качества, если вы его используете. 90 дает вам отличное качество изображения и уменьшает размер файла в два раза, если вы хотите еще больше уменьшить размер файла, используя 85 или 80, но ничего не понимаете.
Это должно быть 60, оно составляет 60 процентов.
Пример. Если вы открываете изображение в Photoshop и пытаетесь сохранить его в Интернете и выберите jpg, вы можете увидеть, что с помощью 60 он все еще находится под высоким качеством, но имеет меньший размер файла. Если вы хотите снизить, с большей деградацией, то есть цвета будут искажены больше.
Более 60 не дают вам ничего лучшего, только больший размер файла.
Это стандартная оптимизация изображения для Интернета. Сохраняйте высокое качество, но сохраняйте размер файла как можно ниже.
Стандарт качества 100% ist довольно большой. попробуйте 85 или 90%, вы не увидите различия на большинстве изображений.
см .: http://www.ampsoft.net/webdesign-l/jpeg-compression.html
Если использовать jpeg, использование качества между 75 и 85, как правило, более чем приемлемо (и 100 занимает слишком много места, для получения, что не так важно, кстати), по крайней мере для фотографий.
В качестве побочного элемента, если вы имеете дело с скриншотами, использование PNG может улучшить качество изображения: jpeg ухудшает изображения (это нормально для фотографий, но для скриншотов, с шрифтами, которые нарисованы пикселями, это может принести немного не приятно наблюдающий эффект)