php縮略圖封裝,PHP縮略圖

本文目錄一覽:

能直接用的PHP生成縮略圖的程序(要求簡單)

?php

/*構造函數-生成縮略圖+水印,參數說明:

$srcFile-圖片文件名,

$dstFile-另存文件名,

$markwords-水印文字,

$markimage-水印圖片,

$dstW-圖片保存寬度,

$dstH-圖片保存高度,

$rate-圖片保存品質*/

makethumb(“a.jpg”,”b.jpg”,”50″,”50″);

function makethumb($srcFile,$dstFile,$dstW,$dstH,$rate=100,$markwords=null,$markimage=null)

{

$data = GetImageSize($srcFile);

switch($data[2])

{

case 1:

$im=@ImageCreateFromGIF($srcFile);

break;

case 2:

$im=@ImageCreateFromJPEG($srcFile);

break;

case 3:

$im=@ImageCreateFromPNG($srcFile);

break;

}

if(!$im) return False;

$srcW=ImageSX($im);

$srcH=ImageSY($im);

$dstX=0;

$dstY=0;

if ($srcW*$dstH$srcH*$dstW)

{

$fdstH = round($srcH*$dstW/$srcW);

$dstY = floor(($dstH-$fdstH)/2);

$fdstW = $dstW;

}

else

{

$fdstW = round($srcW*$dstH/$srcH);

$dstX = floor(($dstW-$fdstW)/2);

$fdstH = $dstH;

}

$ni=ImageCreateTrueColor($dstW,$dstH);

$dstX=($dstX0)?0:$dstX;

$dstY=($dstX0)?0:$dstY;

$dstX=($dstX($dstW/2))?floor($dstW/2):$dstX;

$dstY=($dstY($dstH/2))?floor($dstH/s):$dstY;

$white = ImageColorAllocate($ni,255,255,255);

$black = ImageColorAllocate($ni,0,0,0);

imagefilledrectangle($ni,0,0,$dstW,$dstH,$white);// 填充背景色

ImageCopyResized($ni,$im,$dstX,$dstY,0,0,$fdstW,$fdstH,$srcW,$srcH);

if($markwords!=null)

{

$markwords=iconv(“gb2312″,”UTF-8”,$markwords);

//轉換文字編碼

ImageTTFText($ni,20,30,450,560,$black,”simhei.ttf”,$markwords); //寫入文字水印

//參數依次為,文字大小|偏轉度|橫坐標|縱坐標|文字顏色|文字類型|文字內容

}

elseif($markimage!=null)

{

$wimage_data = GetImageSize($markimage);

switch($wimage_data[2])

{

case 1:

$wimage=@ImageCreateFromGIF($markimage);

break;

case 2:

$wimage=@ImageCreateFromJPEG($markimage);

break;

case 3:

$wimage=@ImageCreateFromPNG($markimage);

break;

}

imagecopy($ni,$wimage,500,560,0,0,88,31); //寫入圖片水印,水印圖片大小默認為88*31

imagedestroy($wimage);

}

ImageJpeg($ni,$dstFile,$rate);

ImageJpeg($ni,$srcFile,$rate);

imagedestroy($im);

imagedestroy($ni);

}

?

PHP縮略圖組件的使用?

下面是一段簡單的PHP的縮略圖片功能請先開啟GD庫?php

define(‘_DIR_’,dirname(__FILE__).’\\’); //定義常量獲取文件路徑

header(‘Content-Type:image/png’);//設置標頭

list($width,$height) = getimagesize(_DIR_.’2.jpg’);//獲取原圖像尺寸的寬度與高度

$_width = $width*0.5;//設置新圖像尺寸的寬度與原圖像的比例

$_height =$height*0.5;//設置新圖像尺寸的高度與原圖像的比例

$_img = imagecreatetruecolor($_width,$_height);//為新圖像創建一個畫布

$img = imagecreatefromjpeg(_DIR_.’2.jpg’);//載入原圖像

imagecopyresampled($_img,$img,0,0,0,0,$_width,$_height,$width,$height);//原圖像拷貝到新圖像畫布

imagepng($_img);//輸出新圖像

imagedestroy($_img);

imagedestroy($img);

?

php創建縮略圖問題

可能你找的這些處理函數(類)功能比較強大,所以會有複雜的感覺。如果只是單純的放大縮小,使用 GD 庫,還是比較簡單的。php 手冊里有一個例子,使用 imagecopyresized 函數。完整的例子如下,你也可以直接看手冊獲取更多的信息,希望對你有幫助。

// PHP 手冊 imagecopyresized 函數的例子

// File and new size

$filename = ‘test.jpg’;

$percent = 0.5;

// Content type

header(‘Content-Type: image/jpeg’);

// Get new sizes

list($width, $height) = getimagesize($filename);

$newwidth = $width * $percent;

$newheight = $height * $percent;

// Load

$thumb = imagecreatetruecolor($newwidth, $newheight);

$source = imagecreatefromjpeg($filename);

// Resize

imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Output

imagejpeg($thumb);

php怎麼生成縮略圖

給你個函數吧

 // *****生成縮略圖*****

     // 只考慮jpg,png,gif格式

     // $srcImgPath 源圖象路徑

     // $targetImgPath 目標圖象路徑

     // $targetW 目標圖象寬度

     // $targetH 目標圖象高度

     function makeThumbnail($srcImgPath,$targetImgPath,$targetW,$targetH)

     {

         $imgSize = GetImageSize($srcImgPath);

         $imgType = $imgSize[2];

         //@ 使函數不向頁面輸出錯誤信息

         switch ($imgType)

        {

            case 1:

                $srcImg = @ImageCreateFromGIF($srcImgPath);

                break;

            case 2:

                $srcImg = @ImageCreateFromJpeg($srcImgPath);

                break;

            case 3:

                $srcImg = @ImageCreateFromPNG($srcImgPath);

                break;

        }

         //取源圖象的寬高

        $srcW = ImageSX($srcImg);

        $srcH = ImageSY($srcImg);

        if($srcW$targetW || $srcH$targetH)

        {

            $targetX = 0;

            $targetY = 0;

            if ($srcW  $srcH)

            {

                $finaW=$targetW;

                $finalH=round($srcH*$finaW/$srcW);

                $targetY=floor(($targetH-$finalH)/2);

            }

            else

            {

                $finalH=$targetH;

                $finaW=round($srcW*$finalH/$srcH);

                $targetX=floor(($targetW-$finaW)/2);

            }

              //function_exists 檢查函數是否已定義

              //ImageCreateTrueColor 本函數需要GD2.0.1或更高版本

            if(function_exists(“ImageCreateTrueColor”))

            {

                $targetImg=ImageCreateTrueColor($targetW,$targetH);

            }

            else

              {

                $targetImg=ImageCreate($targetW,$targetH);

            }

            $targetX=($targetX0)?0:$targetX;

            $targetY=($targetX0)?0:$targetY;

            $targetX=($targetX($targetW/2))?floor($targetW/2):$targetX;

            $targetY=($targetY($targetH/2))?floor($targetH/2):$targetY;

              //背景白色

            $white = ImageColorAllocate($targetImg, 255,255,255);

            ImageFilledRectangle($targetImg,0,0,$targetW,$targetH,$white);

            /*

                   PHP的GD擴展提供了兩個函數來縮放圖象:

                   ImageCopyResized 在所有GD版本中有效,其縮放圖象的演算法比較粗糙,可能會導致圖象邊緣的鋸齒。

                   ImageCopyResampled 需要GD2.0.1或更高版本,其像素插值演算法得到的圖象邊緣比較平滑,

                                                             該函數的速度比ImageCopyResized慢。

            */

            if(function_exists(“ImageCopyResampled”))

            {

                ImageCopyResampled($targetImg,$srcImg,$targetX,$targetY,0,0,$finaW,$finalH,$srcW,$srcH);

            }

            else

            {

                ImageCopyResized($targetImg,$srcImg,$targetX,$targetY,0,0,$finaW,$finalH,$srcW,$srcH);

            }

              switch ($imgType) {

                case 1:

                    ImageGIF($targetImg,$targetImgPath);

                    break;

                case 2:

                    ImageJpeg($targetImg,$targetImgPath);

                    break;

                case 3:

                    ImagePNG($targetImg,$targetImgPath);

                    break;

            }

            ImageDestroy($srcImg);

            ImageDestroy($targetImg);

        }

         else //不超出指定寬高則直接複製

        {

            copy($srcImgPath,$targetImgPath);

            ImageDestroy($srcImg);

        }

     }

代碼已經測試,成功運行!

用PHP怎麼生成高質量的縮略圖

ImageMagick沒用過,一般直接用內置的GD庫,沒有發現你說的這麼嚴重的失真問題。

利用GD庫創建縮略圖的大致思路如下:

依據設定的尺寸創建真彩色畫布$im=createtruecolor(120,90);

讀取原始文件尺寸,按照原始尺寸的寬度和高度比例,計算出縮略圖的大小(可能與給定的尺寸有一定的偏差)

將原始圖像拷貝並縮放到創建的真彩色縮略圖畫布上。

輸出縮略圖文件。

可能就是因為利用的是這個真彩色,縮略圖效果還湊合,也不是說絕對不失真的

你可以去後盾人平台看看,裡面的東西不錯

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/242609.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:50
下一篇 2024-12-12 12:50

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若伺服器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • PHP版本管理工具phpenv詳解

    在PHP項目開發過程中,我們可能需要用到不同版本的PHP環境來試驗不同的功能或避免不同版本的兼容性問題。或者我們需要在同一台伺服器上同時運行多個不同版本的PHP語言。但是每次手動安…

    編程 2025-04-24
  • PHP數組去重詳解

    一、array_unique函數 array_unique是php中常用的數組去重函數,它基於值來判斷元素是否重複,具體使用方法如下: $array = array(‘a’, ‘b…

    編程 2025-04-24
  • PHP導出Excel文件

    一、PHP導出Excel文件列寬調整 當我們使用PHP導出Excel文件時,有時需要調整單元格的列寬。可以使用PHPExcel類庫中的setWidth方法來設置單元格的列寬。下面是…

    編程 2025-04-24
  • php擴展庫初探

    一、什麼是php擴展庫? PHP擴展庫(PHP extension)是一些用C語言編寫的動態鏈接庫,用於擴展PHP的功能。PHP擴展庫使得PHP可以與各種資料庫系統相連、SMTP、…

    編程 2025-04-23

發表回復

登錄後才能評論