生成缩略图的PHP上传图片类

做图片类网站的朋友可能都有自己上传图片的方式方法。这里给大家介绍一个php上传图片类,它可以验证上传文件是否为图片,图片的格式是否是网站所接受的;还可以生成指定大小的缩略图。具体方法如下所示:

<?php
class UploadComponent {

var $imageData = array();
 var $destinationDir = NULL;
 var $thumbDestinationDir = NULL;
 var $imageSize = array(500,500);
 var $cropImageSize = array(90,90);
 var $tag = ‘width‘;
 var $imageExt = array(‘jpg‘,‘gif‘,‘png‘,‘bmp‘,‘jpeg‘);

function initialize($arr)
 {
  $this->imageData = $arr;
 }

function isImageFile()
 {
  $ext = $this->imageExtension();

if(in_array(strtolower($ext),$this->imageExt))
  {
   return true;
  }
  else
  {
   return false;
  }
 }

function isValidImage()
 {
  if($this->imageData[‘error‘] == 0 && $this->imageData[‘name‘] <> ‘‘)
  {
   if($this->isImageFile())
   {
    return true;
   }
   else
   {
    return false;
   }
  }
  else
  {
   return false;
  }
 }

function imageExtension()
 {
  return trim(substr($this->imageData[‘name‘],strpos($this->imageData[‘name‘],‘.‘)+1,strlen($this->imageData[‘name‘])));
 }

function upload($thumb=false)
 {
  $this->__upload($this->destinationDir,$this->imageSize[0],$this->imageSize[1]);
  if($thumb)
  {
   $this->__upload($this->thumbDestinationDir,$this->cropImageSize[0],$this->cropImageSize[1]);
  }
 }

function __upload($filethumb,$Twidth,$Theight)
 {
  list($width,$height,$type,$attr)=getimagesize($this->imageData[‘tmp_name‘]);
  switch($type)
  {
   case 1:
    $img = imagecreatefromgif($this->imageData[‘tmp_name‘]);
   break;
   case 2:
    $img=imagecreatefromjpeg($this->imageData[‘tmp_name‘]);
   break;
   case 3:
    $img=imagecreatefrompng($this->imageData[‘tmp_name‘]);
   break;
  }

if($this->tag == "width") //根据宽度来压缩图片
  {
   $Theight=round(($height/$width)*$Twidth);
  }
  elseif($this->tag == "height") //根据高度来压缩图片
  {
   $Twidth=round(($width/$height)*$Theight);
  }
  else
  {
   if($width > $height)
    $Theight=round(($height/$width)*$Twidth);
   else
    $Twidth=round(($width/$height)*$Theight);
  }
  $thumb=imagecreatetruecolor($Twidth,$Theight);

if(imagecopyresampled($thumb,$img,0,0,0,0,$Twidth,$Theight,$width,$height))
  {
   switch($type)
   {
    case 1:
     imagegif($thumb,$filethumb);
    break;
    case 2:
     imagejpeg($thumb,$filethumb,100);
    break;
    case 3:
     imagepng($thumb,$filethumb);
    break;
   }
   chmod($filethumb,0666);
   return true;
  }
 }
}
?>

这个类的使用方法很简单,将上传文件$_FILES[‘html表单中上传项的name‘]这个变量作为实例化这个类的变量传递给构造函数。之后就可以用其中的方法来处理图片了。当使用upload($thumb=false)函数的时候,$thumb=false为不生成缩略图,反之则生成缩略图;图片以及缩略图的大小可以通过 $imageSize、$cropImageSize这两个变量来指定,默认是500*500和90*90,朋友们可以根据自己的需求来改变他们。

时间: 2024-10-01 06:20:49

生成缩略图的PHP上传图片类的相关文章

PHP.25-TP框架商城应用实例-后台1-添加商品功能、钩子函数、在线编辑器、过滤XSS、上传图片并生成缩略图

添加商品功能 1.创建商品控制器[C] /www.test.com/shop/Admin/Controller/GoodsController.class.php <?php namespace Admin\Controller; use Think\Controller; //后台添加商品功能控制器 class GoodsController extends Controller { //显示和处理表单 public function add() { //判断用户是否提交了表单(如果提交了,就

上传图片并生成缩略图

/** * 上传图片并生成缩略图 */ private void uploadManImageFile(HttpServletRequest request, DataRecord domainMap) { if (!(request instanceof MultipartHttpServletRequest)) { return; } MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) re

【PHP缩略图类】手机照片不能生成缩略图问题以及解决方案

[本文原创,谢绝转载] 一.出现的问题 这几天做了手机上传照片并裁出缩略图的接口的测试,发现不管怎么,生成的缩略图都是一片漆黑.:-( 然后就把这个缩略图类单拿出来进行测试,发现只要是手机拍出来的照片都不能进行缩略图的处理.... 二.问题分析以及解决方案 经过群里的请教,发现问题可能是出现在文件的类型的判断上,因为png图片自带一个透明的图层,导致不能直接转换成jpg的文件,而手机排出的照片扩展名是jpg. 所以,得出的结论是手机拍出的是jpg扩展名的png图片. 由于扩展名是可以随意修改的,

asp.net上传图片并同时生成缩略图

<script language="VB" runat="server"> Sub UploadFile(sender As Object, e As EventArgs) If FileUp.PostedFile.ContentLength = 0 Then FileInfo.Visible = False Exit Sub Else FileInfo.Visible = True FDisplay1.Visible = True End If FSi

js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" method="post" enctype="multipart/form-data">     <input name="photoimg" type="file" id="xwzx_f" style

图片处理类,实现图片处理,包括添加水印和生成缩略图

<?php /** *=================================================================== * image.class.php 图片处理类,实现图片处理,包括添加水印和生成缩略图 * @author 王超平 * @copyright 传智播客PHP学院 2006-2013 * @version 1.0 * 2013年3月25日22:10:38 *===========================================

C#上传图片同时生成缩略图,控制图片上传大小。

1 #region 上传图片生成缩略图 2 /// <summary> 3 /// 上传图片 4 /// </summary> 5 /// <param name="sender"></param> 6 /// <param name="e"></param> 7 public void btnUpload_Click(object sender, EventArgs e) 8 { 9 //检查

php 图片操作类,支持生成缩略图,添加水印,上传缩略图

<?php class Image {     //类开始     public $originimage = ""; //源图片文件地址     public $imageext = ""; //源图片格式     public $thumbimage = ""; //缩略图文件存放地址     public $thumb_maxwidth = 1440; //缩略图最大宽度     public $thumb_maxheight = 9

上传图片生成缩略图

上传图片生成缩略图,原图和缩略图地址一样的时候缩略图会把原图覆盖掉 /// <summary> /// 生成缩略图 /// </summary> /// <param name="originalImagePath">源图路径(物理路径)</param> /// <param name="thumbnailPath">缩略图路径(物理路径)</param> /// <param name=