1. 程式人生 > >PHP壓縮圖片函式

PHP壓縮圖片函式

<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">/** 圖片壓縮函式</span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"> * @param $orgin_file 原始圖片檔案</span>
 * @param $maxwidth 最大寬度
 * @param $maxheight 最大高度
 * @param $name 壓縮圖片名
 * @param $filetype 圖片型別
 */
function resizeImage($orgin_file,$maxwidth,$maxheight,$name,$filetype)
{
	$im = '';
	switch ($filetype){
		case '.jpg':
			$im=imagecreatefromjpeg($orgin_file);
			break;
		case '.png':
			$im=imagecreatefrompng($orgin_file);
			break;
		case '.gif':
			$im=imagecreatefromgif($orgin_file);
			break;
		default:
			$im=imagecreatefromstring(file_get_contents($orgin_file));
	}
	$pic_width = imagesx($im);
	$pic_height = imagesy($im);

	if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight))
	{
		if($maxwidth && $pic_width>$maxwidth)
		{
			$widthratio = $maxwidth/$pic_width;
			$resizewidth_tag = true;
		}

		if($maxheight && $pic_height>$maxheight)
		{
			$heightratio = $maxheight/$pic_height;
			$resizeheight_tag = true;
		}

		if($resizewidth_tag && $resizeheight_tag)
		{
			if($widthratio<$heightratio)
				$ratio = $widthratio;
			else
				$ratio = $heightratio;
		}

		if($resizewidth_tag && !$resizeheight_tag)
			$ratio = $widthratio;
		if($resizeheight_tag && !$resizewidth_tag)
			$ratio = $heightratio;

		$newwidth = $pic_width * $ratio;
		$newheight = $pic_height * $ratio;

		if(function_exists("imagecopyresampled"))
		{
			$newim = imagecreatetruecolor($newwidth,$newheight);//PHP系統函式
			imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);//PHP系統函式
		}
		else
		{
			$newim = imagecreate($newwidth,$newheight);
			imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
		}

		$name = $name.$filetype;
		switch ($filetype){
			case '.jpg':
				imagejpeg($newim,$name);
				break;
			case '.png':
				imagepng($newim,$name);
				break;
			case '.gif':
				imagegif($newim,$name);
				break;
			default:
				imagegd($newim,$name);
		}

		imagedestroy($newim);
	}
	else
	{
		$name = $name.$filetype;
		switch ($filetype){
			case '.jpg':
				imagejpeg($im,$name);
				break;
			case '.png':
				imagepng($im,$name);
				break;
			case '.gif':
				imagegif($im,$name);
				break;
			default:
				imagegd($im,$name);
		}
	}
}

呼叫方法

<span style="white-space:pre">	</span>    $dot_pos = strripos($_FILES['image']['name'],'.');
            $file_extend = substr($_FILES['image']['name'],$dot_pos);
            if(in_array($file_extend,$extend_limit) && in_array($_FILES['image']['type'],$type_limit) &&  ($_FILES["image"]["size"] < 10000000)){
                $real_file_name = getRandChar(5).time().$file_extend;
                $real_path = dirname(__FILE__);
                $sys_path = $real_path.'/myuploads/';
                $real_file_path = $sys_path.$real_file_name;
                if (move_uploaded_file($_FILES['image']['tmp_name'], $real_file_path)) {
                    $result['status'] = 1;
                    $maxwidth="600";
                    $maxheight="400";
                    $name=$real_file_path.'.thump';
                    $filetype=$file_extend;
                    resizeImage($real_file_path,$maxwidth,$maxheight,$name,$filetype);
                    $result['imgurl'] = 'myuploads/'.$real_file_name.'.thump'.$file_extend;
                } else {
                    $result['status'] = 4;
                    $result['desc'] = '圖片上傳失敗';
                }
            }else{
                $result['status'] = 3;
                $result['desc']   = '請選擇圖片檔案上傳';
            }


圖片新增水印可以參考“imagecopymerge”函式,手冊很詳細。

相關推薦

PHP壓縮圖片函式

<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">/** 圖片壓縮函式</span><span style="font-family: Arial

php 壓縮圖片

如何用php  壓縮圖片 廢話不說 直接上程式碼   header("Content-type: image/jpeg");//獲取圖片路徑$file = "123.jpg";$percent = 0.3; //圖片壓縮比list($width, $height) = getimage

php 壓縮圖片,保留圖片的畫素、透明度

/** * @param $picture 圖片資料流 比如file_get_contents(imageurl)返回的東東 * @param $destfile 儲存路徑 */ function miniImg($picture,$destf

PHP 壓縮圖片質量

$imageFileName = './test2.jpg';$uploadfile_resize = $imageFileName;$pic_width_max = 1000;$pic_height_max = 1000;$file_type = getimagesize($imageFileName)['

php壓縮圖片

在專案開發過程中少不了會用到圖片上傳功能,考慮到伺服器頻寬及磁碟空間,需要對圖片進行壓縮。 前端的壓縮可以節約頻寬,後端的壓縮可以節省磁碟空間。 function resizeImage($source,$percent=0.5){ if(empty($sourc

PHP 壓縮圖片 合併圖片和製作圓頭像利用gd庫

//按照寬高縮放圖片 public static function zoom($filename,$nw,$nh){ if(!file_exists(EXT.'qrcode/zoom/')){ mkdir(EXT.'qrcode/zoom/',0777,true);

PHP壓縮上傳圖片

是否 amp break class gef char mar fread type 最近手上的項目頁面要顯示很多圖片,雖然用了jQuery的lazyload,但是效果並沒理想,滑動到一個區域還要比較長的時間圖片才完全顯示出來。於是想著將上傳上去的900KB+壓縮備份一份縮

PHP實現圖片壓縮同時保持清晰度

縮小 con col inf turn 清晰 實驗 www lower PHP實現圖片壓縮同時保持清晰度 圖片太大是一個經常遇到的問題,為此很多人頭疼。今天告訴大家如何實現PHP程序簡單實現壓縮: 圖片原大小: 壓縮後: 這是我自己實驗的,可以處理多種圖片格式。 當然圖

Intervention\Image Laravel php等比例壓縮圖片 報錯:Call to undefined method Intervention\Image\Image::make()

安裝 composer require intervention/image 開啟config/app.php,註冊如下服務提供者到$providers陣列: Intervention\Image\ImageServiceProvider::class 然

Jquery+HTML5+PHP實現前臺壓縮圖片並上傳

先上圖吧: 待上傳 上傳後 功能描述: 使用HTML5在前臺進行圖片壓縮,然後上傳至伺服器上由PHP儲存。此外掛只適用於PC端,未做手機端頁面優化,如果需要應用在手機端請自行優化UI,即然是PC端為什麼還要前端壓縮呢?PC端很容易使用圖片處理軟體進行壓縮,那是適用於

PHP 按一定比例壓縮圖片,保持清晰度

圖片壓縮是我們日常開發中經常使用的操作,在如今需求很多的情況往往,上傳的一張圖片會被壓縮成不同比例的圖片,每次去操作也是一件非常繁瑣的事情,於是進行了封裝了一個壓縮圖片的操作類,希望大家遇到後,不用再為寫很多壓縮圖片程式碼煩惱了。 壓縮圖片的工具類: <?php /

PHP等比例縮放圖片大小壓縮圖片空間

/** * 等比例壓縮圖片,支援圖片格式jpg,jpeg,png * @param string $dst_dir 上傳的資料夾 * @param string $dst_name 上傳後的名稱,不包括副檔名 * @param int $maxWidth 如果需要等比

PHP 生成圖片縮圖函式

各位小盆友使用前記得開啟 GD 庫的支援哦,附上程式碼。 <?php /** * 生成縮圖函式(支援圖片格式:gif、jpeg、png和bmp) * @author ruxing.li * @param string $src 源圖片路徑 * @p

php實現圖片壓縮依舊保持清晰度

PHP實現圖片壓縮同時保持清晰度圖片太大是一個經常遇到的問題,為此很多人頭疼。今天告訴大家如何實現PHP程式簡單實現壓縮:圖片原大小:壓縮後:這是我自己實驗的,可以處理多種圖片格式。當然圖片原圖越大,越能體現出壓縮來。現在附上程式碼:<?php /** * 圖片壓縮類

前端壓縮圖片以及php後端上傳

 後端壓縮已經越來越不能滿足使用者的需求,尤其在前端日益發展的今天,前端壓縮勢在必行。以前由於一直沒有找到合適的前端壓縮的方法,一次放棄,一次次繞行,最終沒有繞過這道坎。接下來我們說一下前端壓縮還有上傳        1.引入js,index.js已上傳我的資源。     

php簡單圖片壓縮,基於laravel框架的原生處理

if($image->getClientMimeType() == "image/png"){//圖片格式$src = @imagecreatefrompng ($image->getRealPath());  //建立畫布,從快取檔案路徑載入圖片list($wi

PHP實現圖片壓縮

/** * 生成圖片 * @param string $im 源圖片路徑 * @param string $dest 目標圖片路徑 * @param int $maxwidth 生成圖片寬 * @param int $maxheight 生成圖片高 */ func

php 壓縮各格式圖片,處理png格式圖片背景黑色問題

    //壓縮圖片 //$srcFile 檔名 //$percent壓縮比 //$quality圖片質量     function pictumb($srcFile,$percent,$quality){         $dstFile = $srcFile;//保留名

base64上傳頭像;php ajax前端壓縮圖片上傳;thinkphp5非同步上傳頭像

實現效果:點選頭像,直接選擇圖片,選完圖片,直接執行非同步上傳並替換圖片 相關知識點:php+ajax 亮點:如果選擇圖片較大,會在前端進行壓縮上傳,有利於提高上傳速度和減輕伺服器壓力 html程式碼比較簡單,實際上就是用絕對定位將上傳框定位到圖片上層,並將背景透明

c# 無損高質量壓縮圖片代碼

++ osi name source 新路 public rip erp lan 最近,項目上涉及到了圖像壓縮,發現原有的圖像壓縮功能,雖然保證了圖像的大小300K以內,但是壓縮後的圖像看的不在清晰,並且,限定了圖片的Height或者是Width。 在CSDN上看到了一個