2013-10-19 74 views
0

让我可以在我的网络服务器上对图像进行收费。 这两个脚本可以工作,但不能在一起。第一个是在我的服务器上对图像进行收费,第二个是调整图像大小。我尝试了一些帖子,但我找不到正确的方式使它与我的原始代码一起工作。以特定尺寸在PHP中调整图像大小

<?php 
    $fileName = $_FILES['AddPhoto']['name']; 
    $tmpName = $_FILES['AddPhoto']['tmp_name']; 
    $fileSize = $_FILES['AddPhoto']['size']/1024; 
    $fileType = $_FILES['AddPhoto']['type']; 
    $fileExtension = end(explode(".", $fileName)); 

    if(($fileType == "image/gif" || $fileType == "image/jpeg" || $fileType == "image/pjpeg" || $fileType == "image/png" || $fileType == "image/x-png") && $fileSize < 1000000) { 

     $newFileName = md5(date('u').rand(0,99)).".".$fileExtension; 
     $imagePath = "assets/picts/".$newFileName; 

     $result = @move_uploaded_file($tmpName, $imagePath); 

     $request = mysql_query("SELECT ".$TypeField."Images FROM $TypeFiche WHERE $TypeId='$cardId'"); 
     $var2 = mysql_fetch_array($request); 

     mysql_query("UPDATE ".$TypeFiche." SET `".$TypeField."Images`='".$var2[$TypeField.'Images'].$newFileName.",' WHERE $TypeId='$cardId'"); 

     if (!$result) { 
      $newImgMessError = "Error.<br />"; 
     } 
     if ($result) { 
      $newImgMessError = "Valid.<br />"; 
     } 
    } 
?> 

我想有可能调整图像的大小。

任何线索和帮助将非常感激。

谢谢。

回答

0

继承人一个简单的类

<?php 
/** 
* Resize image class will allow you to resize an image 
* 
* Can resize to exact size 
* Max width size while keep aspect ratio 
* Max height size while keep aspect ratio 
* Automatic while keep aspect ratio 
*/ 
class ResizeImage 
{ 
    private $ext; 
    private $image; 
    private $newImage; 
    private $origWidth; 
    private $origHeight; 
    private $resizeWidth; 
    private $resizeHeight; 

    /** 
    * Class constructor requires to send through the image filename 
    * 
    * @param string $filename - Filename of the image you want to resize 
    */ 
    public function __construct($filename) 
    { 
     if(file_exists($filename)) 
     { 
      $this->setImage($filename); 
     } else { 
      throw new Exception('Image ' . $filename . ' can not be found, try another image.'); 
     } 
    } 

    /** 
    * Set the image variable by using image create 
    * 
    * @param string $filename - The image filename 
    */ 
    private function setImage($filename) 
    { 
     $size = getimagesize($filename); 
     $this->ext = $size['mime']; 

     switch($this->ext) 
     { 
      // Image is a JPG 
      case 'image/jpg': 
      case 'image/jpeg': 
       // create a jpeg extension 
       $this->image = imagecreatefromjpeg($filename); 
       break; 

      // Image is a GIF 
      case 'image/gif': 
       $this->image = @imagecreatefromgif($filename); 
       break; 

      // Image is a PNG 
      case 'image/png': 
       $this->image = @imagecreatefrompng($filename); 
       break; 

      // Mime type not found 
      default: 
       throw new Exception("File is not an image, please use another file type.", 1); 
     } 

     $this->origWidth = imagesx($this->image); 
     $this->origHeight = imagesy($this->image); 
    } 

    /** 
    * Save the image as the image type the original image was 
    * 
    * @param String[type] $savePath  - The path to store the new image 
    * @param string $imageQuality  - The qulaity level of image to create 
    * 
    * @return Saves the image 
    */ 
    public function saveImage($savePath, $imageQuality="100", $download = false) 
    { 
     switch($this->ext) 
     { 
      case 'image/jpg': 
      case 'image/jpeg': 
       // Check PHP supports this file type 
       if (imagetypes() &#038; IMG_JPG) { 
        imagejpeg($this->newImage, $savePath, $imageQuality); 
       } 
       break; 

      case 'image/gif': 
       // Check PHP supports this file type 
       if (imagetypes() &#038; IMG_GIF) { 
        imagegif($this->newImage, $savePath); 
       } 
       break; 

      case 'image/png': 
       $invertScaleQuality = 9 - round(($imageQuality/100) * 9); 

       // Check PHP supports this file type 
       if (imagetypes() &#038; IMG_PNG) { 
        imagepng($this->newImage, $savePath, $invertScaleQuality); 
       } 
       break; 
     } 

     if($download) 
     { 
      header('Content-Description: File Transfer'); 
      header("Content-type: application/octet-stream"); 
      header("Content-disposition: attachment; filename= ".$savePath.""); 
      readfile($savePath); 
     } 

     imagedestroy($this->newImage); 
    } 

    /** 
    * Resize the image to these set dimensions 
    * 
    * @param int $width   - Max width of the image 
    * @param int $height   - Max height of the image 
    * @param string $resizeOption - Scale option for the image 
    * 
    * @return Save new image 
    */ 
    public function resizeTo($width, $height, $resizeOption = 'default') 
    { 
     switch(strtolower($resizeOption)) 
     { 
      case 'exact': 
       $this->resizeWidth = $width; 
       $this->resizeHeight = $height; 
      break; 

      case 'maxwidth': 
       $this->resizeWidth = $width; 
       $this->resizeHeight = $this->resizeHeightByWidth($width); 
      break; 

      case 'maxheight': 
       $this->resizeWidth = $this->resizeWidthByHeight($height); 
       $this->resizeHeight = $height; 
      break; 

      default: 
       if($this->origWidth > $width || $this->origHeight > $height) 
       { 
        if ($this->origWidth > $this->origHeight) { 
         $this->resizeHeight = $this->resizeHeightByWidth($width); 
         $this->resizeWidth = $width; 
        } else if($this->origWidth < $this->origHeight) { 
         $this->resizeWidth = $this->resizeWidthByHeight($height); 
         $this->resizeHeight = $height; 
        } 
       } else { 
        $this->resizeWidth = $width; 
        $this->resizeHeight = $height; 
       } 
      break; 
     } 

     $this->newImage = imagecreatetruecolor($this->resizeWidth, $this->resizeHeight); 
     imagecopyresampled($this->newImage, $this->image, 0, 0, 0, 0, $this->resizeWidth, $this->resizeHeight, $this->origWidth, $this->origHeight); 
    } 

    /** 
    * Get the resized height from the width keeping the aspect ratio 
    * 
    * @param int $width - Max image width 
    * 
    * @return Height keeping aspect ratio 
    */ 
    private function resizeHeightByWidth($width) 
    { 
     return floor(($this->origHeight/$this->origWidth)*$width); 
    } 

    /** 
    * Get the resized width from the height keeping the aspect ratio 
    * 
    * @param int $height - Max image height 
    * 
    * @return Width keeping aspect ratio 
    */ 
    private function resizeWidthByHeight($height) 
    { 
     return floor(($this->origWidth/$this->origHeight)*$height); 
    } 
} 
?> 

用法:

$resize = new ResizeImage('images/Be-Original.jpg'); 
$resize->resizeTo(100, 100, 'maxWidth'); 
$resize->saveImage('images/be-original-maxWidth.jpg'); 

资源和更多的例子: http://www.paulund.co.uk/resize-image-class-php

1

$ _FILES [ 'AddPhoto']是你的图像文件,转移到服务器。您将其保存在$ imagepath中。这个路径是你创建JPEG图像(对于其他人来说是不同的函数)和imagecreatefromjpeg($ imagepath)等功能时所需要的。从这一点开始,您可以使用很多您在StackOverflow中找到的示例。其中一篇已经由Juan David Decano在本篇论文中发表。

0

试试这个

$filename = stripslashes($_FILES['file']['name']); 

    $extension = getExtension($filename); 
    $extension = strtolower($extension); 


if($extension=="jpg" || $extension=="jpeg") 
{ 
$uploadedfile = $_FILES['file']['tmp_name']; 
$src = imagecreatefromjpeg($uploadedfile); 
} 
else if($extension=="png") 
{ 
$uploadedfile = $_FILES['file']['tmp_name']; 
$src = imagecreatefrompng($uploadedfile); 
} 
else 
{ 
$src = imagecreatefromgif($uploadedfile); 
} 
echo $scr; 
list($width,$height)=getimagesize($uploadedfile); 
$newwidth=60; 
$newheight=($height/$width)*$newwidth; 
$tmp=imagecreatetruecolor($newwidth,$newheight); 
$newwidth1=25; 
$newheight1=($height/$width)*$newwidth1; 
$tmp1=imagecreatetruecolor($newwidth1,$newheight1); 
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height); 
imagecopyresampled($tmp1,$src,0,0,0,0,$newwidth1,$newheight1,$width,$height); 
$filename = "images/". $_FILES['file']['name']; 
$filename1 = "images/small". $_FILES['file']['name']; 
imagejpeg($tmp,$filename,100); 
imagejpeg($tmp1,$filename1,100); 
imagedestroy($src); 
imagedestroy($tmp); 
imagedestroy($tmp1); 
相关问题