Изменение размера изображения с использованием PHP5 и JQuery - PullRequest
0 голосов
/ 15 июня 2011

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

Ответы [ 4 ]

2 голосов
/ 15 июня 2011

Лучший вариант - обрезать изображение во время загрузки изображения. Ниже приведен код для обрезки изображения с использованием библиотеки GD, может, он вам поможет.

<?php
function createThumb($upfile, $dstfile, $max_width, $max_height){
   $size = getimagesize($upfile);
   $width = $size[0];
   $height = $size[1];
   $x_ratio = $max_width / $width;
   $y_ratio = $max_height / $height;
   if( ($width <= $max_width) && ($height <= $max_height)) {
           $tn_width = $width;
           $tn_height = $height;

   } elseif (($x_ratio * $height) < $max_height) {
           $tn_height = ceil($x_ratio * $height);
           $tn_width = $max_width;

   } else {
           $tn_width = ceil($y_ratio * $width);
           $tn_height = $max_height;

   }
   if($size['mime'] == "image/jpeg"){

           $src = ImageCreateFromJpeg($upfile);
           $dst = ImageCreateTrueColor($tn_width, $tn_height);
           imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height);
           imageinterlace( $dst, true);
           ImageJpeg($dst, $dstfile, 100);
   } else if ($size['mime'] == "image/png"){
           $src = ImageCreateFrompng($upfile);
           $dst = ImageCreateTrueColor($tn_width, $tn_height);
           imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height);
           Imagepng($dst, $dstfile);

   } else {

           $src = ImageCreateFromGif($upfile);
           $dst = ImageCreateTrueColor($tn_width, $tn_height);
           imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height);
           imagegif($dst, $dstfile);
   }
}

//usage

if(isset($_FILES['upload_Image']['name']) && $_FILES['upload_Image']['name']!=='') {
    $ext = substr($_FILES['upload_Image']['name'], strpos($_FILES['upload_Image']['name'],'.'), strlen($_FILES['upload_Image']['name'])-1); 

    $imgNormal = time().$ext;
    $normalDestination = "Photos/Orignal/" . $imgNormal;
    $httpRootLarge = "Photos/Large/" . $imgNormal;
    $httpRootSmall = "Photos/Small/" . $imgNormal;
    $httpRootThumb = "Photos/Thumb/" . $imgNormal;
    move_uploaded_file($_FILES['upload_Image']['tmp_name'], $normalDestination);
    createThumb($normalDestination,$httpRootLarge,680,604); #For 604x604 Image 
    createThumb($normalDestination,$httpRootSmall,500,300); #For 500x300 Image
    createThumb($normalDestination,$httpRootThumb,130,100); #For 130x100 Image
}
?>
1 голос
/ 15 июня 2011

Есть два варианта:

  1. Создание миниатюры для изображения (через графическую библиотеку в PHP) и сохранение его (лучше для производительности).
  2. Динамически изменяйте размер изображения с помощью графической библиотеки PHP и отображайте его.

Вы также можете обратиться к этой странице для более подробной информации: http://php.net/manual/book.image.php

0 голосов
/ 15 июня 2011

Ребята из Nettuts имеют отличную тему на эту тему: Изменение размера изображения стало проще с PHP :)

0 голосов
/ 15 июня 2011

Я думаю, что вам нужен ImageMagick. Вы можете найти много примеров в Google, у меня есть только пример Perl.

...