技術(shù)頻道導航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運營

贊助商

分類目錄

贊助商

最新文章

搜索

縮略圖更清晰了:imagecopysampled代替imagecopyresized

作者:admin    時間:2022-4-7 22:2:16    瀏覽:

之前用 imagecopyresized() 生成縮略圖,但是效果不是太理想,后來把 imagecopyresized() 換成 imagecopysampled() ,效果好太多了,圖片變得更加清晰了。

我們先來看看對比圖吧。

 imagecopyresized()生成的縮略圖
imagecopyresized()生成的縮略圖

imagecopysampled()生成的縮略圖 
imagecopysampled()生成的縮略圖

 

通過對比圖,很明顯看出,imagecopysampled()生成的縮略圖,清晰度高很多。

下面是imagecopysampled()生成縮略圖的代碼。

<?php


$src_img = "1.jpg";
$dst_w = 200;
$dst_h = 125;

list($src_w,$src_h)=getimagesize($src_img);  // 獲取原圖尺寸
 
$dst_scale = $dst_h/$dst_w; //目標圖像長寬比
$src_scale = $src_h/$src_w; // 原圖長寬比
 
if ($src_scale>=$dst_scale){  // 過高
    $w = intval($src_w);
    $h = intval($dst_scale*$w);
 
    $x = 0;
    $y = ($src_h - $h)/3;
} else { // 過寬
    $h = intval($src_h);
    $w = intval($h/$dst_scale);
 
    $x = ($src_w - $w)/2;
    $y = 0;
}
 
// 剪裁
$source=imagecreatefromjpeg($src_img);
$croped=imagecreatetruecolor($w, $h);
imagecopy($croped, $source, 0, 0, $x, $y, $src_w, $src_h);
 
// 縮放
$scale = $dst_w / $w;
$target = imagecreatetruecolor($dst_w, $dst_h);
$final_w = intval($w * $scale);
$final_h = intval($h * $scale);
imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h);
 
// 保存
$timestamp = time();
imagejpeg($target, "$timestamp.jpg");
imagedestroy($target);


?>

以上代碼是完整可運行代碼,你只需要把代碼里的圖片名$src_img = "1.jpg";改為你本地的圖片,生成的縮略圖片會保存在程序目錄里。

下面是imagecopyresized()生成縮略圖的代碼。

<?php

// 文件和新圖片大小,這里是縮小0.5倍
$filename = '1.jpg';
$percent = 0.5;

// 獲得新尺寸
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;

// 加載
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

// 調(diào)整大小
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// 保存
$timestamp = time();
imagejpeg($thumb, "$timestamp.jpg");
imagedestroy($thumb);

?>

以上代碼是完整可運行代碼,你只需要把代碼里的圖片名$filename = '1.jpg';改為你本地的圖片,生成的縮略圖片會保存在程序目錄里。

總結(jié)

本文介紹了用imagecopysampled()生成清晰度較高的縮略圖的方法,有關(guān)PHP裁剪圖片的方法,你也可以看看我之前介紹的另一篇文章。

知識擴展

imagecopysampled參數(shù)詳解

成功時返回 TRUE, 或者在失敗時返回 FALSE。

用法

bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h ,int $src_w , int $src_h )
  • $dst_image:新建的圖片
  • $src_image:需要載入的圖片
  • $dst_x:設(shè)定需要載入的圖片在新圖中的x坐標
  • $dst_y:設(shè)定需要載入的圖片在新圖中的y坐標
  • $src_x:設(shè)定載入圖片要載入的區(qū)域x坐標
  • $src_y:設(shè)定載入圖片要載入的區(qū)域y坐標
  • $dst_w:設(shè)定載入的原圖的寬度(在此設(shè)置縮放)
  • $dst_h:設(shè)定載入的原圖的高度(在此設(shè)置縮放)
  • $src_w:原圖要載入的寬度
  • $src_h:原圖要載入的高度

imagecopyresized參數(shù)詳解

imagecopyresized() 函數(shù)用于拷貝圖像或圖像的一部分并調(diào)整大小,成功返回 TRUE ,否則返回 FALSE 。

用法

bool imagecopyresized( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h )

本函數(shù)參數(shù)可參看 imagecopy() 函數(shù),只是本函數(shù)增加了兩個參數(shù)(注意順序):

  • dst_w:目標圖像的寬度。
  • dst_h:目標圖像的高度。

解釋

src_im 圖像中坐標從 src_x,src_y 開始,寬度為 src_w,高度為 src_h 的一部分拷貝到 dst_im 圖像中坐標為 dst_xdst_y 的位置上。

相關(guān)文章
    x
    • 站長推薦
    /* 左側(cè)顯示文章內(nèi)容目錄 */