我是利用 SiteShoter 來獲取網頁的快照
然後再利用 php 的 GD 功能來製作縮圖
運作過程
1. 由 SiteShoter 來抓取整頁的快照
2. 利用 GD 將圖片的寬度縮小至 800px 寬
3. 擷取上面的 800*600 的空間製作 100*75 的縮圖
其實一切都很順利
只是有一點很怪,在 第二步 製作出來寬 800 的圖
結果其大小比 SiteShoter 產生的圖片還要大
1.08 MB(961*4297) -> 2.03 MB(800*3577)
其下附上縮圖的程式碼
$src = imagecreatefrompng($real_poth . 'src/' . $data[0] . '.png');
$src_size = array('x'=>imagesx($src), 'y'=>imagesy($src));
$thumb_size = make_thumb_size($src_size, 800, 0);
$thumb = imagecreatetruecolor($thumb_size['x'], $thumb_size['y']);
imagecopyresampled($thumb, $src, 0, 0, 0, 0, $thumb_size['x'], $thumb_size['y'], $src_size['x'], $src_size['y']);
imagepng($thumb, $real_poth . $data[0] . '.png', 9, PNG_ALL_FILTERS);
function make_thumb_size($src, $w, $h)
{
$thumb = $src;
if( $w!=0 && $thumb['x']>$w )
{
$thumb['y'] = intval($src['y'] / $src['x'] * $w);
$thumb['x'] = $w;
}
if( $h!=0 && $thumb['y']>$h )
{
$thumb['x'] = intval($thumb['x'] / $thumb['y'] * $h);
$thumb['y'] = $h;
}
return $thumb;
}

X