摘要:做了一個(gè)圖片上傳處理類,功能有圖片的拉伸縮小以及加入水印。時(shí)間有點(diǎn)倉(cāng)促整理花費(fèi)了好多時(shí)間,各位大俠如果覺得還可以點(diǎn)個(gè)贊唄。不多說,直接上代碼,注釋不清晰的大俠們可以直接查的文檔。
做了一個(gè)圖片上傳處理類,功能有圖片的拉伸,縮小以及加入水印。時(shí)間有點(diǎn)倉(cāng)促,整理花費(fèi)了好多時(shí)間,各位大俠如果覺得還可以點(diǎn)個(gè)贊唄。不多說,直接上代碼,注釋不清晰的大俠們可以直接查PHP的文檔。
原圖
縮小圖
放大圖
ZwelL圖片上傳程序
PHP代碼如下
123.jpeg [type] => image/jpeg //[tmp_name] => /Applications/XAMPP/xamppfiles/temp/phpdsYVOn [error] => 0 [size] => 2890 $file = $_FILES["upfile"]; if ($this->max_file_size < $file["size"]) { return "文件太大!"; } if (!in_array($file["type"], $this->file_types)) { return "文件類型不符!" . $file["type"]; } if (!file_exists($this->destination_folder)) { mkdir($this->destination_folder); } $filename = $file["tmp_name"]; //獲得文件類型 $p_info = pathinfo($file["name"]); $f_type = $p_info["extension"]; $destination = $this->destination_folder . time() . "." . $f_type; if (file_exists($destination)) { return "同名文件已經(jīng)存在了"; } if (!move_uploaded_file($filename, $destination)) { return "移動(dòng)文件出錯(cuò)"; } //獲得圖片信息 //Array ( [0] => 200 [1] => 200 [2] => 2 [3] => width="200" height="200" [bits] => 8 [channels] => 3 [mime] => image/jpeg ) $image_info = getimagesize($destination); if ($this->is_water) { $this->waterMark($destination, $image_info); } switch ($image_info[2]) { case 2: $simage = imagecreatefromjpeg($destination);//創(chuàng)建新圖像 $this->resizeImage($simage, $this->resize_width, $this->resize_height, $destination, "jpeg"); break; case 3: $simage = imagecreatefrompng($destination); $this->resizeImage($simage, $this->resize_width, $this->resize_height, $destination, "png"); break; case 6: $simage = imagecreatefromwbmp($destination); $this->resizeImage($simage, $this->resize_width, $this->resize_height, $destination, "wbmp"); break; } // $p_info = pathinfo($destination); // $f_name = $p_info["basename"]; // $image_size = getimagesize($filename); // echo " 文件名:" . $this->destination_folder . $f_name . "
"; // echo " 寬度:" . $image_size[0]; // echo " 長(zhǎng)度:" . $image_size[1]; // echo "
大小:" . $file["size"] . " bytes"; return $destination; } private function waterMark($destination, $image_size) { $iinfo = getimagesize($destination, $iinfo); $nimage = imagecreatetruecolor($image_size[0], $image_size[1]); $white = imagecolorallocate($nimage, 255, 255, 255); $black = imagecolorallocate($nimage, 0, 0, 0); imagefill($nimage, 0, 0, $white); switch ($iinfo[2]) { case 1: $simage = imagecreatefromgif($destination); break; case 2: $simage = imagecreatefromjpeg($destination); break; case 3: $simage = imagecreatefrompng($destination); break; case 6: $simage = imagecreatefromwbmp($destination); break; default: die("不支持的文件類型"); } imagecopy($nimage, $simage, 0, 0, 0, 0, $image_size[0], $image_size[1]); imagefilledrectangle($nimage, 1, $image_size[1] - 15, 80, $image_size[1], $white); switch ($this->water_type) { case 1: //加水印字符串 imagestring($nimage, 2, 3, $image_size[1] - 15, $this->water_string, $black); break; case 2: //加水印圖片 $simage1 = imagecreatefromgif("xplore.gif"); imagecopy($nimage, $simage1, 0, 0, 0, 0, 85, 15); imagedestroy($simage1); break; } switch ($iinfo[2]) { case 1: imagejpeg($nimage, $destination); break; case 2: imagejpeg($nimage, $destination); break; case 3: imagepng($nimage, $destination); break; case 6: imagewbmp($nimage, $destination); //imagejpeg($nimage, $destination); break; } //覆蓋原上傳文件 imagedestroy($nimage); imagedestroy($simage); } private function resizeImage($im, $max_width, $max_height, $name, $file_type) { $pic_width = imagesx($im);//源圖像寬度 $pic_height = imagesy($im);//源圖像高度 $width_tag = false; $height_tag = false; $width_ratio = 0; $height_ratio = 0; $ratio = 0; if (($max_width && $pic_width > $max_width) || ($max_height && $pic_height > $max_height)) { if ($max_width && $pic_width > $max_width) { $width_ratio = $max_width / $pic_width; $width_tag = true; } if ($max_height && $pic_height > $max_height) { $height_ratio = $max_height / $pic_height; $height_tag = true; } if ($width_tag && $height_tag) { if ($width_ratio < $height_ratio) $ratio = $width_ratio; else $ratio = $height_ratio; } if ($width_tag && !$height_tag) { $ratio = $width_ratio; } if ($height_tag && !$width_tag) { $ratio = $height_ratio; } $new_width = $pic_width * $ratio; $new_height = $pic_height * $ratio; if (function_exists("imagecopyresampled")) { $new_im = imagecreatetruecolor($new_width, $new_height);//創(chuàng)建一個(gè)空?qǐng)D片資源 imagecopyresampled($new_im, $im, 0, 0, 0, 0, $new_width, $new_height, $pic_width, $pic_height);//等比縮放 } else { $new_im = imagecreate($new_width, $new_height);//創(chuàng)建一個(gè)空?qǐng)D片資源 imagecopyresized($new_im, $im, 0, 0, 0, 0, $new_width, $new_height, $pic_width, $pic_height); } switch ($file_type) { case "jpeg": imagejpeg($new_im, $name); break; case "png": imagepng($new_im, $name); break; case "wbmp": imagewbmp($new_im, $name); break; } imagedestroy($new_im); } else { if (function_exists("imagecopyresampled")) { $new_im = imagecreatetruecolor($max_width, $max_height);//創(chuàng)建一個(gè)空?qǐng)D片資源 imagecopyresampled($new_im, $im, 0, 0, 0, 0, $max_width, $max_height, $pic_width, $pic_height);//等比縮放 echo 1111; } else { $new_im = imagecreate($max_width, $max_width);//創(chuàng)建一個(gè)空?qǐng)D片資源 imagecopyresized($new_im, $im, 0, 0, 0, 0, $max_width, $max_height, $pic_width, $pic_height); } switch ($file_type) { case "jpeg": imagejpeg($new_im, $name); break; case "png": imagepng($new_im, $name); break; case "wbmp": imagewbmp($new_im, $name); break; } imagedestroy($new_im); } } } $f = new FileUploadUtil(); $destination = $f->fileUpload(); $image_size = getimagesize($destination); echo " 文件名:" . $destination . "
"; echo " 寬度:" . $image_size[0]; echo " 長(zhǎng)度:" . $image_size[1]; ?>
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22899.html
摘要:有時(shí)上傳圖片時(shí),需要給圖片添加水印,水印一般為文字或圖片水印,下面就來(lái)看看兩種添加方法??截惒⒑喜D像的一部分更多庫(kù)函數(shù)用法,請(qǐng)查手冊(cè)相關(guān)文章實(shí)現(xiàn)圖片上傳時(shí)添加文字和圖片水印 有時(shí)上傳圖片時(shí),需要給圖片添加水印,水印一般為文字或圖片logo水印,下面就來(lái)看看兩種添加方法。 一、文字水印 文字水印就是在圖片上加上文字,主要使用gd庫(kù)的imagefttext方法,并且需要字體文件。效果圖如...
摘要:時(shí)間年月日星期五說明本文部分內(nèi)容均來(lái)自慕課網(wǎng)。慕課網(wǎng)教學(xué)源碼無(wú)學(xué)習(xí)源碼第一章課程簡(jiǎn)介引言通過一個(gè)項(xiàng)目案例的講解,如何在應(yīng)用中實(shí)現(xiàn)圖片水印的添加。 時(shí)間:2017年07月21日星期五說明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無(wú)學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程簡(jiǎn)介 1-1 引言 通過一...
摘要:一安裝拓展二上傳文件為上傳表單的名為上傳表單的名并將上傳的圖片壓縮成同時(shí)實(shí)現(xiàn)單圖上傳和多圖上傳多圖上傳單圖上傳三添加水印添加文字水印添加文字水印主要使用到方法方法參數(shù)說明可選定義第一個(gè)字符的基點(diǎn)。默認(rèn)值可選定義第一個(gè)字符的基點(diǎn)。 一:安裝intervention/image拓展 composer require intervention/image 二:上傳文件 Interventi...
摘要:如果使用阿里云函數(shù)計(jì)算,您將高峰期每小時(shí)的訪問日志,或者低谷期每小時(shí)的訪問日志交給一個(gè)計(jì)算函數(shù)處理,并將處理結(jié)果存到中。下面結(jié)合阿里云的函數(shù)計(jì)算產(chǎn)品來(lái)講解各個(gè)應(yīng)用場(chǎng)景中架構(gòu)以及如何解決的場(chǎng)景中的痛點(diǎn)。 摘要: Serverless概念是近年來(lái)特別火的一個(gè)技術(shù)概念,基于這種架構(gòu)能構(gòu)建出很多應(yīng)用場(chǎng)景,適合各行各業(yè),只要對(duì)輕計(jì)算、高彈性、無(wú)狀態(tài)等場(chǎng)景有訴求的用戶都可以通過本文來(lái)普及一些基礎(chǔ)概...
摘要:拍照黨福利駕到華為云微認(rèn)證教你實(shí)現(xiàn)圖片壓縮和水印添加在手機(jī)拍照成為日常的今天,用照片記錄生活已成為人們的一種習(xí)慣。華為云微認(rèn)證將總共送出個(gè)免費(fèi)機(jī)會(huì),獎(jiǎng)項(xiàng)公布時(shí)間月日。 拍照黨福利駕到 華為云微認(rèn)證教你實(shí)現(xiàn)圖片壓縮和水印添加 在手機(jī)拍照成為日常的今天,用照片記錄生活已成為人們的一種習(xí)慣。拍照容易處理難,面對(duì)手機(jī)相冊(cè)中大量的照片,你是否也苦惱過?刪,舍不得;上傳,會(huì)不會(huì)被盜圖?能否發(fā)出足夠...
閱讀 1210·2021-11-24 11:16
閱讀 3438·2021-11-15 11:38
閱讀 1943·2021-10-20 13:47
閱讀 557·2021-09-29 09:35
閱讀 2206·2021-09-22 15:17
閱讀 1022·2021-09-07 09:59
閱讀 3392·2019-08-30 13:21
閱讀 2915·2019-08-30 12:47