2009-09-03 169 views
0

我想剪裁图像。有没有可能这样做。如果是的话,crop()函数将如何?使用php裁剪图像

$imgURL始终是.jpg图片。

$image = file_get_contents($imgURL); 
$maxWidth = 100; 
$height = 68; 

$image = crop($image, $maxWidth, $height); 

file_put_contents("media/imgname.jpg", $image); 

function crop($image, $maxWidth, $height){ 
    ...how do I crop the image? 
} 

回答

2

看看gd library这通常是大多数PHP安装的一部分。

通常情况下,你最好:

  1. 导入使用的imagecreatefromTYPE功能之一
  2. 使用imagecreate($宽度,高度$),以使空白缓冲图像
  3. 使用imagecopy的图像()将想要的部分传输到缓冲区
  4. 使用图像类型函数之一将缓冲区写出到文件中。
0

如果您的服务器上没有安装GD,您可以使用的另一种选择是Image Magick。

0

查找下面的代码进行图像裁切使用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 

} 

?> 
0

只是试着从Jquery做JCROP插件

一个最好的插件用于裁剪图像

deepliquid.com----download JCROP

function cropfun(){   
      $('#previews').Jcrop({ 
       aspectRatio: 3, 
       minSize:[300,100] , 
       boxWidth: 450, boxHeight: 400, 
       bgFade:true, 
       bgOpacity: .5, 
       setSelect: [ 60, 70, 600, 330 ], 
       onSelect: updateCoords 
      }); 

} 

function updateCoords(c) 
     { 
      $('#x').val(c.x); 
      $('#y').val(c.y); 
      $('#w').val(c.w); 
      $('#h').val(c.h); 
     }; 

     function checkCoords() 
     { 

      if (parseInt($('#w').val())) return true; 
      alert('Select where you want to Crop.'); 
      return false; 
     }; 

在主体部分

 <img src="uploads/<?php echo $image; ?>" id="previews" name="previews" onclick="cropfun();" /> 
    <input type="file" name="image22" id="image22" style="visibility:hidd"  > 
    <input type="hidden" id="hh" name="hh" value="" /> 
    <input type="hidden" id="hhh" name="hhh" value="<?php echo $image; ?>" /> 
     <input type="hidden" id="x" name="x" /> 
     <input type="hidden" id="y" name="y" /> 
     <input type="hidden" id="w" name="w" /> 
     <input type="hidden" id="h" name="h" /> 
     <input type="submit" name="submit" id="sub" value="submit" /> 
    </form> 
+0

他要了一个PHP不是一个JavaScript,尤其是不适用于jQuery解决方案。 – CodeBrauer 2016-05-19 13:48:33