使用PHP5和JQuery调整图像大小

时间:2011-06-15 07:18:59

标签: php jquery image resize

嗨我想在详细信息部分显示时调整图像大小。为此我检查了许多PHP脚本,但它不能在我的语言环境中工作。显示图像路径的一些脚本必须以/开头,但是当我这样做时,找不到它的节目图像。此外,大多数脚本演示页面都显示虚假图像。

4 个答案:

答案 0 :(得分:2)

最佳选择是在图片上传时裁剪图像。请使用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 :(得分:1)

有两种选择:

  1. 为图像创建缩略图(通过PHP中的图形库)并存储(更好地提高性能)。
  2. 使用PHP图形库动态调整图像大小并显示它。
  3. 您也可以参阅此页面了解更多详情:http://php.net/manual/book.image.php

答案 2 :(得分:0)

我认为你需要ImageMagick。您可以在Google中找到很多示例,我只有Perl示例。

答案 3 :(得分:0)

关于nettuts的人对这个主题有很好的评价:Image Resizing Made Easy with PHP :)