Intereting Posts
Безопасное извлечение вывода для обоих полей html и ввода Получение «Не удалось найти точку доступа к процедуре php_var_unserialized_init» Где размещать глобальные функции в кодеринговом Запрос Mysql и PHP LIKE не генерирует никаких результатов на странице, но возвращает результат в Mysql Передать переменную Javascript на PHP POST Загрузка библиотеки из определенной папки PHP-асинхронный mysql-запрос Как преобразовать xml в массив в php? Итерации через определенное дерево каталогов и сохранение всех .ttf-файлов в массив в PHP Просмотр списка товаров в корзине с помощью PHP CodeIgniter RESTful, асинхронный / фоновый процесс Как преобразовать строку datetime в UTC? Сессия PHP не уничтожает после выхода пользователя из системы Каким образом лучше всего использовать хэш-пароль? Что может вызвать прерывистый SQLSTATE Нет таких ошибок файла или каталога из php PDO mysql в Debian Lenny?

Изображение обрезки PHP для исправления ширины и высоты без потери соотношения размеров

im, чтобы создать эскизы с размером 100px на 100px. Я видел много статей, объясняющих методы, но большинство из них имеют ширину! = height, если необходимо сохранить отношение размеров.

например, у меня есть изображение 450 пикселей на 350 пикселей. я хотел бы обрезать до 100 пикселей на 100 пикселей. если бы я должен был поддерживать соотношение, я бы получил 100px на 77px. это делает его уродливым, когда я перечисляю эти изображения в строке и столбце. однако изображение без размерного соотношения будет выглядеть ужасно.

я видел изображения от flickr, и они выглядят фантастическими. например:
thumbnail: http://img.ruphp.com/image/32608803_29470dfeeb_s.jpg
средний размер: http://img.ruphp.com/image/32608803_29470dfeeb.jpg
большой размер: http://img.ruphp.com/image/32608803_29470dfeeb_b.jpg

ТКС

Solutions Collecting From Web of "Изображение обрезки PHP для исправления ширины и высоты без потери соотношения размеров"

Это делается только с использованием части изображения в виде миниатюры с соотношением сторон 1: 1 (главным образом, в центре изображения). Если вы посмотрите внимательно, вы можете увидеть его в миниатюре flickr.

Поскольку у вас есть «урожай» в вашем вопросе, я не уверен, что вы еще этого не знали, но что вы хотите знать?

Чтобы использовать обрезку, вот пример:

//Your Image $imgSrc = "image.jpg"; //getting the image dimensions list($width, $height) = getimagesize($imgSrc); //saving the image into memory (for manipulation with GD Library) $myImage = imagecreatefromjpeg($imgSrc); // calculating the part of the image to use for thumbnail if ($width > $height) { $y = 0; $x = ($width - $height) / 2; $smallestSide = $height; } else { $x = 0; $y = ($height - $width) / 2; $smallestSide = $width; } // copying the part into thumbnail $thumbSize = 100; $thumb = imagecreatetruecolor($thumbSize, $thumbSize); imagecopyresampled($thumb, $myImage, 0, 0, $x, $y, $thumbSize, $thumbSize, $smallestSide, $smallestSide); //final output header('Content-type: image/jpeg'); imagejpeg($thumb); 

Изображение обрезки с квадратом на основе меньшей ширины или высоты

  public function croppThis($target_url) { $this->jpegImgCrop($target_url); } 

$ target_url – это имя изображения.

  public function jpegImgCrop($target_url) {//support $image = imagecreatefromjpeg($target_url); $filename = $target_url; $width = imagesx($image); $height = imagesy($image); $image_type = imagetypes($image); //IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP | IMG_XPM if($width==$height) { $thumb_width = $width; $thumb_height = $height; } elseif($width<$height) { $thumb_width = $width; $thumb_height = $width; } elseif($width>$height) { $thumb_width = $height; $thumb_height = $height; } else { $thumb_width = 150; $thumb_height = 150; } $original_aspect = $width / $height; $thumb_aspect = $thumb_width / $thumb_height; if ( $original_aspect >= $thumb_aspect ) { // If image is wider than thumbnail (in aspect ratio sense) $new_height = $thumb_height; $new_width = $width / ($height / $thumb_height); } else { // If the thumbnail is wider than the image $new_width = $thumb_width; $new_height = $height / ($width / $thumb_width); } $thumb = imagecreatetruecolor( $thumb_width, $thumb_height ); // Resize and crop imagecopyresampled($thumb, $image, 0 - ($new_width - $thumb_width) / 2, // Center the image horizontally 0 - ($new_height - $thumb_height) / 2, // Center the image vertically 0, 0, $new_width, $new_height, $width, $height); imagejpeg($thumb, $filename, 80); } 

Вы можете использовать этот код. Вам необходимо передать путь к исходному изображению и размер эскиза в px и дополнительный путь назначения. если вы пройдете, это сохранит изображение, иначе будет показан большой палец.

Разрешены только jpg, jpeg и png.

 function cropImage($sourcePath, $thumbSize, $destination = null) { $parts = explode('.', $sourcePath); $ext = $parts[count($parts) - 1]; if ($ext == 'jpg' || $ext == 'jpeg') { $format = 'jpg'; } else { $format = 'png'; } if ($format == 'jpg') { $sourceImage = imagecreatefromjpeg($sourcePath); } if ($format == 'png') { $sourceImage = imagecreatefrompng($sourcePath); } list($srcWidth, $srcHeight) = getimagesize($sourcePath); // calculating the part of the image to use for thumbnail if ($srcWidth > $srcHeight) { $y = 0; $x = ($srcWidth - $srcHeight) / 2; $smallestSide = $srcHeight; } else { $x = 0; $y = ($srcHeight - $srcWidth) / 2; $smallestSide = $srcWidth; } $destinationImage = imagecreatetruecolor($thumbSize, $thumbSize); imagecopyresampled($destinationImage, $sourceImage, 0, 0, $x, $y, $thumbSize, $thumbSize, $smallestSide, $smallestSide); if ($destination == null) { header('Content-Type: image/jpeg'); if ($format == 'jpg') { imagejpeg($destinationImage, null, 100); } if ($format == 'png') { imagejpeg($destinationImage); } if ($destination = null) { } } else { if ($format == 'jpg') { imagejpeg($destinationImage, $destination, 100); } if ($format == 'png') { imagepng($destinationImage, $destination); } } } 

Мне нравится использовать GDLib для игры с изображениями, с фантастически легко работать. Есть много сообщений в блогах и учебных пособий. Я бы рекомендовал использовать класс для этого или подобный, хотя, поскольку уход за всеми изменениями изображения может занять много времени.