php上传图片并压缩的实现方法
本文实例讲解了php上传图片并压缩的实现方法,之前一篇《PHP实现图片上传并压缩》已经为大家进行了简单介绍,此次实现上传图片然后按照比例缩略图,指定缩略图的最大高度或者最大宽度,具体内容如下
实现代码:
function _UPLOADPIC($upfile, $maxsize, $updir, $newname = 'date') { if ($newname == 'date') $newname = date ( "Ymdhis" ); //使用日期做文件名 $name = $upfile ["name"]; $type = $upfile ["type"]; $size = $upfile ["size"]; $tmp_name = $upfile ["tmp_name"]; switch ($type) { case 'image/pjpeg' : case 'image/jpeg' : $extend = ".jpg"; break; case 'image/gif' : $extend = ".gif"; break; case 'image/png' : $extend = ".png"; break; } if (emptyempty ( $extend )) { echo ( "警告!只能上传图片类型:GIF JPG PNG" ); exit (); } if ($size > $maxsize) { $maxpr = $maxsize / 1000; echo ( "警告!上传图片大小不能超过" . $maxpr . "K!" ); exit (); } if (move_uploaded_file ( $tmp_name, $updir . $newname . $extend )) { return $updir . $newname . $extend; } } function show_pic_scal($width, $height, $picpath) { $imginfo = GetImageSize ( $picpath ); $imgw = $imginfo [0]; $imgh = $imginfo [1]; $ra = number_format ( ($imgw / $imgh), 1 ); //宽高比 $ra2 = number_format ( ($imgh / $imgw), 1 ); //高宽比 if ($imgw > $width or $imgh > $height) { if ($imgw > $imgh) { $newWidth = $width; $newHeight = round ( $newWidth / $ra ); } elseif ($imgw < $imgh) { $newHeight = $height; $newWidth = round ( $newHeight / $ra2 ); } else { $newWidth = $width; $newHeight = round ( $newWidth / $ra ); } } else { $newHeight = $imgh; $newWidth = $imgw; } $newsize [0] = $newWidth; $newsize [1] = $newHeight; return $newsize; } function getImageInfo($src) { return getimagesize($src); } /** * 创建图片,返回资源类型 * @param string $src 图片路径 * @return resource $im 返回资源类型 * **/ function create($src) { $info=getImageInfo($src); switch ($info[2]) { case 1: $im=imagecreatefromgif($src); break; case 2: $im=imagecreatefromjpeg($src); break; case 3: $im=imagecreatefrompng($src); break; } return $im; } /** * 缩略图主函数 * @param string $src 图片路径 * @param int $w 缩略图宽度 * @param int $h 缩略图高度 * @return mixed 返回缩略图路径 * **/ function resize($src,$w,$h) { $temp=pathinfo($src); $name=$temp["basename"];//文件名 $dir=$temp["dirname"];//文件所在的文件夹 $extension=$temp["extension"];//文件扩展名 $savepath="{$dir}/{$name}";//缩略图保存路径,新的文件名为*.thumb.jpg //获取图片的基本信息 $info=getImageInfo($src); $width=$info[0];//获取图片宽度 $height=$info[1];//获取图片高度 $per1=round($width/$height,2);//计算原图长宽比 $per2=round($w/$h,2);//计算缩略图长宽比 //计算缩放比例 if($per1>$per2||$per1==$per2) { //原图长宽比大于或者等于缩略图长宽比,则按照宽度优先 $per=$w/$width; } if($per1<$per2) { //原图长宽比小于缩略图长宽比,则按照高度优先 $per=$h/$height; } $temp_w=intval($width*$per);//计算原图缩放后的宽度 $temp_h=intval($height*$per);//计算原图缩放后的高度 $temp_img=imagecreatetruecolor($temp_w,$temp_h);//创建画布 $im=create($src); imagecopyresampled($temp_img,$im,0,0,0,0,$temp_w,$temp_h,$width,$height); if($per1>$per2) { imagejpeg($temp_img,$savepath, 100); imagedestroy($im); return addBg($savepath,$w,$h,"w"); //宽度优先,在缩放之后高度不足的情况下补上背景 } if($per1==$per2) { imagejpeg($temp_img,$savepath, 100); imagedestroy($im); return $savepath; //等比缩放 } if($per1<$per2) { imagejpeg($temp_img,$savepath, 100); imagedestroy($im); return addBg($savepath,$w,$h,"h"); //高度优先,在缩放之后宽度不足的情况下补上背景 } } /** * 添加背景 * @param string $src 图片路径 * @param int $w 背景图像宽度 * @param int $h 背景图像高度 * @param String $first 决定图像最终位置的,w 宽度优先 h 高度优先 wh:等比 * @return 返回加上背景的图片 * **/ function addBg($src,$w,$h,$fisrt="w") { $bg=imagecreatetruecolor($w,$h); $white = imagecolorallocate($bg,255,255,255); imagefill($bg,0,0,$white);//填充背景 //获取目标图片信息 $info=getImageInfo($src); $width=$info[0];//目标图片宽度 $height=$info[1];//目标图片高度 $img=create($src); if($fisrt=="wh") { //等比缩放 return $src; } else { if($fisrt=="w") { $x=0; $y=($h-$height)/2;//垂直居中 } if($fisrt=="h") { $x=($w-$width)/2;//水平居中 $y=0; } imagecopymerge($bg,$img,$x,$y,0,0,$width,$height,100); imagejpeg($bg,$src,100); imagedestroy($bg); imagedestroy($img); return $src; } }
使用方法
$filename=(_UPLOADPIC($_FILES["upload"],$maxsize,$updir,$newname='date')); $show_pic_scal=show_pic_scal(230, 230, $filename); resize($filename,$show_pic_scal[0],$show_pic_scal[1]);

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Die PHP -Protokollierung ist für die Überwachung und Debugie von Webanwendungen von wesentlicher Bedeutung sowie für das Erfassen kritischer Ereignisse, Fehler und Laufzeitverhalten. Es bietet wertvolle Einblicke in die Systemleistung, hilft bei der Identifizierung von Problemen und unterstützt eine schnellere Fehlerbehebung

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

Alipay PHP ...
