程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 解析php中兩種縮放圖片的函數,為圖片添加水印

解析php中兩種縮放圖片的函數,為圖片添加水印

編輯:PHP綜合

有兩種改變圖像大小的方法.
(1):ImageCopyResized() 函數在所有GD版本中有效,但其縮放圖像的算法比較粗糙.
(2):ImageCopyResampled(),其像素插值算法得到的圖像邊緣比較平滑.質量較好(但該函數的速度比 ImageCopyResized() 慢).
兩個函數的參數是一樣的.如下:
ImageCopyResampled(dest,src,dx,dy,sx,sy,dw,dh,sw,sh);
ImageCopyResized(dest,src,dx,dy,sx,sy,dw,dh,sw,sh
);
它們兩個都是從原圖像(source)中抓取特定位置(sx,sy)復制圖像qu區域到目標t 圖像(destination)的特定位置(dx,dy)。另外dw,dh指定復制的圖像區域在目標圖像上的大小,sw,sh指定從原圖像復制的圖像區域 的大小。如果有ps經驗的話,就相當於在原圖像選擇一塊區域,剪切移動到目的圖像上,同時有拉伸或縮小的操作。
例一:
(本例子是將圖片按原大小的4/1的大小顯示)
復制代碼 代碼如下:
<?php
// 指定文件路徑和縮放比例
$filename = 'test.jpg';
$percent = 0.5;
// 指定頭文件Content typezhi值
header('Content-type: image/jpeg');
// 獲取圖片的寬高
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;
// 創建一個圖片。接收參數分別為寬高,返回生成的資源句柄
$thumb = imagecreatetruecolor($newwidth, $newheight);
//獲取源文件資源句柄。接收參數為圖片路徑,返回句柄
$source = imagecreatefromjpeg($filename);
// 將源文件剪切全部域並縮小放到目標圖片上。前兩個為資源句柄
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// 輸出給浏覽器
imagejpeg($thumb);
?>

推薦一個簡單實用的縮放圖片工具 SimpleImage,參考http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/
使用方法:
復制代碼 代碼如下:
<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resize(250,400);
   $image->save('picture2.jpg');?>
設定寬度,等比例縮放
<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resizeToWidth(250);
   $image->save('picture2.jpg');?>
設定高度,等比例縮放
<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resizeToHeight(500);
   $image->save('picture2.jpg');
   $image->resizeToHeight(200);
   $image->save('picture3.jpg');?>
按比例,縮放至50%
<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->scale(50);
   $image->save('picture2.jpg');?>
縮放後直接輸出到屏幕
<?php
   header('Content-Type: image/jpeg');
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resizeToWidth(150);
   $image->output();?>

SimpleImage.php 源碼請輕點文章開頭鏈接,到那下載
--------------------------------------------------------------------------------
為圖片加上水印
復制代碼 代碼如下:
<?php
  $source=imagecreatefromjpeg('E:/image/guide_pic.jpg');
  $thumb=imagecreatefromjpeg('E:/image/l.JPG');
//取得圖片的寬度,高度,類型
  list($width,$height,$mine)=getimagesize('E:/image/guide_pic.jpg');
  imagecopymerge ($source,$thumb,$width-124,$height-150,0,0,88,73,70);
//生成圖片
  imagejpeg($source,'E:/image/logo.jpg');
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved