PHP按一定比例壓縮圖片的方法
圖片壓縮是我們?nèi)粘i_(kāi)發(fā)中經(jīng)常使用的操作,在如今需求很多的情況往往,上傳的一張圖片會(huì)被壓縮成不同比例的圖片,每次去操作也是一件非常繁瑣的事情,于是進(jìn)行了封裝了一個(gè)壓縮圖片的操作類,希望大家遇到后,不用再為寫很多壓縮圖片代碼煩惱了。
壓縮圖片的工具類:
<?php /** 圖片壓縮操作類 v1.0 */ class Image{ private $src; private $imageinfo; private $image; public $percent = 0.1; public function __construct($src){ $this->src = $src; } /** 打開(kāi)圖片 */ public function openImage(){ list($width, $height, $type, $attr) = getimagesize($this->src); $this->imageinfo = array( 'width'=>$width, 'height'=>$height, 'type'=>image_type_to_extension($type,false), 'attr'=>$attr ); $fun = "imagecreatefrom".$this->imageinfo['type']; $this->image = $fun($this->src); } /** 操作圖片 */ public function thumpImage(){ $new_width = $this->imageinfo['width'] * $this->percent; $new_height = $this->imageinfo['height'] * $this->percent; $image_thump = imagecreatetruecolor($new_width,$new_height); //將原圖復(fù)制帶圖片載體上面,并且按照一定比例壓縮,極大的保持了清晰度 imagecopyresampled($image_thump,$this->image,0,0,0,0,$new_width,$new_height,$this->imageinfo['width'],$this->imageinfo['height']); imagedestroy($this->image); $this->image = $image_thump; } /** 輸出圖片 */ public function showImage(){ header('Content-Type: image/'.$this->imageinfo['type']); $funcs = "image".$this->imageinfo['type']; $funcs($this->image); } /** 保存圖片到硬盤 */ public function saveImage($name){ $funcs = "image".$this->imageinfo['type']; $funcs($this->image,$name.'.'.$this->imageinfo['type']); } /** 銷毀圖片 */ public function __destruct(){ imagedestroy($this->image); } } ?>
測(cè)試:
<?php require 'image.class.php'; $src = "001.jpg"; $image = new Image($src); $image->percent = 0.2; $image->openImage(); $image->thumpImage(); $image->showImage(); $image->saveImage(md5("aa123")); ?>
結(jié)果:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
從零開(kāi)始學(xué)YII2框架(四)擴(kuò)展插件yii2-kartikgii
yii2-kartikgii這個(gè)插件主要功能是幫助你在使用gii生成代碼curd的時(shí)候生成kartik-gird的。不需要每次用默認(rèn)的gii工具生成代碼之后再手動(dòng)添加kartik-gird,這正是我想要的功能。快速生成kartik-grid。2014-08-08Laravel框架定時(shí)任務(wù)2種實(shí)現(xiàn)方式示例
這篇文章主要介紹了Laravel框架定時(shí)任務(wù)2種實(shí)現(xiàn)方式,結(jié)合實(shí)例形式較為詳細(xì)的分析了Laravel框架定時(shí)任務(wù)相關(guān)實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下2018-12-12Laravel Memcached緩存驅(qū)動(dòng)的配置與應(yīng)用方法分析
這篇文章主要介紹了Laravel Memcached緩存驅(qū)動(dòng)的配置與應(yīng)用方法,結(jié)合實(shí)例形式分析了在Laravel框架配置Memcached緩存及相關(guān)使用方法,需要的朋友可以參考下2016-10-10以PHP代碼為實(shí)例詳解RabbitMQ消息隊(duì)列中間件的6種模式
這篇文章主要介紹了以PHP代碼為實(shí)例詳解RabbitMQ消息隊(duì)列中間件的6種模式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05php結(jié)合ajax實(shí)現(xiàn)手機(jī)發(fā)紅包的案例
發(fā)紅包功能,當(dāng)我們輸入紅包數(shù)量和總金額后,PHP會(huì)根據(jù)這兩個(gè)值進(jìn)行隨機(jī)分配每個(gè)金額,保證每個(gè)人都能領(lǐng)取到一個(gè)紅包,每個(gè)紅包金額不等,就是要求紅包金額要有差異,所有紅包金額總額應(yīng)該等于總金額。2016-10-10PHP實(shí)現(xiàn)的英文名字全拼隨機(jī)排號(hào)腳本
這篇文章主要介紹了PHP實(shí)現(xiàn)的英文名字全拼隨機(jī)排號(hào)腳本,根據(jù)一個(gè)需求寫出的一個(gè)解決方案,需要的朋友可以參考下2014-07-07php 創(chuàng)建以UNIX時(shí)間戳命名的文件夾(示例代碼)
這篇文章主要介紹了php創(chuàng)建以UNIX時(shí)間戳命名的文件夾(示例代碼)。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-03-03laravel-admin自動(dòng)生成模塊,及相關(guān)基礎(chǔ)配置方法
今天小編就為大家分享一篇laravel-admin自動(dòng)生成模塊,及相關(guān)基礎(chǔ)配置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10