熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

php對圖像的各種處理函數代碼小結

2013-11-15 12:37:35  來源: PHP編程 

  創建圖片資源

  imagecreatetruecolor(widthheight);
imagecreatefromgif(圖片名稱);
imagecreatefrompng(圖片名稱);
imagecreatefromjpeg(圖片名稱);畫出各種圖像 imagegif(圖片資源保存路徑);
imagepng()
imagejpeg();

  獲取圖片屬性

  imagesx(res//寬度
imagesy(res//高度
getimagesize(文件路徑)
返回一個具有四個單 元的數組索引 包含圖像寬度的像素值索引 包含圖像高度的像素值索引 是圖像類型的標記 = GIF = JPG = PNG = SWF = PSD = BMP = TIFF(intel byte order) = TIFF(motorola byte order) = JPC = JP = JPX = JB = SWC = IFF = WBMP = XBM這些標記與 PHP 新加的 IMAGETYPE 常量對應索引 是文本字符串內容為“height="yyy" width="xxx"”可直接用於 IMG 標記
銷毀圖像資源
imagedestroy(圖片資源);

  透明處理

  PNGjpeg透明色都正常只有gif不正常

  imagecolortransparent(resource image [int color])//將某個顏色設置成透明色
imagecolorstotal()
imagecolorforindex();

  圖片的裁剪

  imagecopyresized()
imagecopyresampled();

  加水印(文字圖片)

  字符串編碼轉換string iconv ( string $in_charset string $out_charset string $str )

  圖片旋轉

  imagerotate();//制定角度的圖片翻轉

  圖片的翻轉

  沿X軸   沿Y軸翻轉

  銳化

  imagecolorsforindex()

  imagecolorat()

  在圖片上畫圖形  $img=imagecreatefromgif("/images/mapgif");

復制代碼 代碼如下:
 $red= imagecolorallocate($img );
 imageline($img $red);
 imageellipse($img $red);
 imagegif($img "/images/mapgif");
 imagedestroy($img);

  圖片普通縮放

復制代碼 代碼如下:
$filename="/images/heejpg";
 $per=;
 list($width $height)=getimagesize($filename);
 $n_w=$width*$per;
 $n_h=$width*$per;

  $new=imagecreatetruecolor($n_w $n_h);

  $img=imagecreatefromjpeg($filename);
//拷貝部分圖像並調整

  imagecopyresized($new $img $n_w $n_h $width $height);
//圖像輸出新圖片另存為

  imagejpeg($new "/images/heejpg");

  imagedestroy($new);
 imagedestroy($img);

  
圖片等比例縮放沒處理透明色

復制代碼 代碼如下:
function thumn($background $width $height $newfile) {
 list($s_w $s_h)=getimagesize($background);//獲取原圖片高度寬度

  if ($width && ($s_w < $s_h)) {
     $width = ($height / $s_h) * $s_w;
 } else {
     $height = ($width / $s_w) * $s_h;
 }

  $new=imagecreatetruecolor($width $height);

  $img=imagecreatefromjpeg($background);

  imagecopyresampled($new $img $width $height $s_w $s_h);

  imagejpeg($new $newfile);

  imagedestroy($new);
 imagedestroy($img);
}

  thumn("images/heejpg" "/images/heejpg");

  
gif透明色處理

復制代碼 代碼如下:
function thumn($background $width $height $newfile) {
 list($s_w $s_h)=getimagesize($background);

  if ($width && ($s_w < $s_h)) {
     $width = ($height / $s_h) * $s_w;
 } else {
     $height = ($width / $s_w) * $s_h;
 }

  $new=imagecreatetruecolor($width $height);

  $img=imagecreatefromgif($background);

  $otsc=imagecolortransparent($img);
 if($otsc >= && $otst < imagecolorstotal($img)){//判斷索引色
  $tran=imagecolorsforindex($img $otsc);//索引顏色值

  $newt=imagecolorallocate($new $tran["red"] $tran["green"] $tran["blue"]);

  imagefill($new $newt);

  imagecolortransparent($new $newt);
 }

  imagecopyresized($new $img $width $height $s_w $s_h);

  imagegif($new $newfile);

  imagedestroy($new);
 imagedestroy($img);
}

  thumn("images/mapgif" "/images/mapgif");

  
圖片裁剪

復制代碼 代碼如下:
function cut($background $cut_x $cut_y $cut_width $cut_height $location){

  $back=imagecreatefromjpeg($background);

  $new=imagecreatetruecolor($cut_width $cut_height);

  imagecopyresampled($new $back $cut_x $cut_y $cut_width $cut_height$cut_width$cut_height);

  imagejpeg($new $location);

  imagedestroy($new);
 imagedestroy($back);
}

  cut("/images/heejpg" "/images/heejpg");

  
圖片加水印

  文字水印

復制代碼 代碼如下:
function mark_text($background $text $x $y){
  $back=imagecreatefromjpeg($background);

  $color=imagecolorallocate($back );

  imagettftext($back $x $y $color "simkaittf" $text);

  imagejpeg($back "/images/heejpg");

  imagedestroy($back);
 }

  mark_text("/images/heejpg" "細說PHP" );

  //圖片水印
function mark_pic($background $waterpic $x $y){
$back=imagecreatefromjpeg($background);
$water=imagecreatefromgif($waterpic);
$w_w=imagesx($water);
$w_h=imagesy($water);
imagecopy($back $water $x $y $w_w $w_h);
imagejpeg($back"/images/heejpg");
imagedestroy($back);
imagedestroy($water);
}
mark_pic("/images/heejpg" "/images/gaolfgif" );

  圖片旋轉

復制代碼 代碼如下:
$back=imagecreatefromjpeg("/images/heejpg");
 $new=imagerotate($back );
 imagejpeg($new "/images/heejpg");

  
圖片水平翻轉垂直翻轉

復制代碼 代碼如下:
function turn_y($background $newfile){
  $back=imagecreatefromjpeg($background);

  $width=imagesx($back);
  $height=imagesy($back);

  $new=imagecreatetruecolor($width $height);

  for($x=; $x < $width; $x++){
   imagecopy($new $back $width$x $x $height);
  }

  imagejpeg($new $newfile);

  imagedestroy($back);
  imagedestroy($new);
 }

  function turn_x($background $newfile){
  $back=imagecreatefromjpeg($background);

  $width=imagesx($back);
  $height=imagesy($back);

  $new=imagecreatetruecolor($width $height);

  for($y=; $y < $height; $y++){
   imagecopy($new $back $height$y $y $width );
  }

  imagejpeg($new $newfile);

  imagedestroy($back);
  imagedestroy($new);
 }

  turn_y("/images/heejpg" "/images/heejpg");
 turn_x("/images/heejpg" "/images/heejpg");

  
 圖片銳化

復制代碼 代碼如下:

  
function sharp($background $degree $save){
 $back=imagecreatefromjpeg($background);

  $b_x=imagesx($back);
 $b_y=imagesy($back);

  $dst=imagecreatefromjpeg($background);
 for($i=; $i<$b_x; $i++){
  for($j=; $j<$b_y; $j++){
   $b_clr=imagecolorsforindex($back imagecolorat($back $i $j));前一個像素顏色數組
   $b_clr=imagecolorsforindex($back imagecolorat($back $i $j));取出當前顏色數組

  $r=intval($b_clr["red"]+$degree*($b_clr["red"]$b_clr["red"]));加深
   $g=intval($b_clr["green"]+$degree*($b_clr["green"]$b_clr["green"]));
   $b=intval($b_clr["blue"]+$degree*($b_clr["blue"]$b_clr["blue"]));

  $r=min( max($r ));//限制r范圍在之間
   $g=min( max($g ));
   $b=min( max($b ));

  if(($d_clr=imagecolorexact($dst $r $g $b))==){//等於不在顏色范圍內
    $d_clr=Imagecolorallocate($dst $r $g $b);//創建一個顏色
   }

  imagesetpixel($dst $i $j $d_clr);
  }

  }
 imagejpeg($dst $save);
 imagedestroy($back);
 imagedestroy($dst);
}

  sharp("/images/heejpg" "/images/heejpg");


From:http://tw.wingwit.com/Article/program/PHP/201311/21300.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.