如何在沒有GD的情況下在PHP中合併兩個圖像?如何在沒有GD的情況下在PHP中合併兩個圖像?
2
A
回答
7
PHP沒有內置的支持來做你的要求。你需要
執行其他命令行腳本/程序,可以
安裝許多圖像處理庫之一,並與
工作可能找到一個第三方的API,您可以發送請求並獲得合併圖像的響應?
請執行周華健建議(需要安裝:http://bg.php.net/manual/en/imagick.setup.php)
2
如果沒有像GD或ImageMagick這樣的庫,就無法在PHP中進行圖像處理。
3
您可以使用Imagick。
-1
我用這段代碼塊在我的項目合併各種圖像到一個:
<?php
/* example invocation: http://www.yourserver.com/combine.php?dir=/images/ */
set_time_limit(5*60);
function sanitize($input) {
$input=strip_tags($input);
$input=str_replace("<","<",$input);
$input=str_replace(">",">",$input);
$input=str_replace("#","%23",$input);
$input=str_replace("'","`",$input);
$input=str_replace(";","%3B",$input);
$input=str_replace("script","",$input);
$input=str_replace("%3c","",$input);
$input=str_replace("%3e","",$input);
$input=trim($input);
return $input;
}
//accept path to images via http param dir (e.g. '/templates/corporate/images/okb/' -- include trailing slash)
$rel = '';
if (array_key_exists("dir", $_REQUEST)) $rel = sanitize($_REQUEST["dir"]);
if ($rel=='') die();
$rt = $_SERVER['DOCUMENT_ROOT'] . $rel;
$i = 0;
$imgBuf = array();
$maxW=0; $maxH=0;
$imagesperline = 5;
$curlineW = 0;
$curlineMaxH = 0;
$imagespacing=5;
$dir = opendir ($rt);
while (false !== ($link = readdir($dir)))
{
$len = strlen($link);
$off = $len - 3;
$ext = substr($link, $off, 3);
$file = $rt . $link;
switch($ext)
{
case 'png':
$iTmp = imagecreatefrompng($file);
break;
case 'gif':
$iTmp = imagecreatefromgif($file);
break;
case 'jpeg':
case 'jpg':
$iTmp = imagecreatefromjpeg($file);
break;
default:
continue;
}
array_push ($imgBuf,$iTmp);
$i++;
if ($i == $imagesperline + 1)
{
$i = 0;
$maxW=($maxW>$curlineW)?$maxW:$curlineW;
$curlineW = 0;
$maxH+=$curlineMaxH+$imagespacing;
$curlineMaxH=0;
}
else
{
$ix = imagesx($iTmp);
$iy = imagesy($iTmp);
$curlineW+=$ix+$imagespacing;
$curlineMaxH=($iy>$curlineMaxH)?$iy:$curlineMaxH;
}
}
$iOut = imagecreate ($maxW,$maxH) ;
$i=1;
$curxpos = 0;
$curypos = 0;
$curlineMaxH=0;
foreach ($imgBuf as $img)
{
if ($i <= $imagesperline)
{
$ix = imagesx($img);
$iy = imagesy($img);
imagecopy ($iOut,$img,$curxpos,$curypos,0,0,$ix,$iy);
$curxpos+=$ix + $imagespacing;
$curlineMaxH=($iy>$curlineMaxH)?$iy:$curlineMaxH;
}
else
{
$i = 0;
$curxpos = 0;
$curypos += $curlineMaxH + $imagespacing;
$curlineMaxH = 0;
imagecopy ($iOut,$img,$curxpos,$curypos,0,0,$ix,$iy);
}
imagedestroy ($img);
$i++;
}
imagegif($iOut);
closedir ($dir);
?>
+0
這是使用GD – 2010-06-20 01:01:33
相關問題
- 1. 在GD中使用php合併圖像
- 2. 在GD中使用php合併圖像
- 3. 在沒有蒙版的情況下在PHP中裁剪圖像
- 4. 在沒有mapReduce的情況下合併mongodb中的兩個集合...?
- 5. PHP GD圖像不合並
- 6. 如何在沒有保存鍵的情況下在PHP中合併數組?
- 7. 合併圖像由gd在php
- 8. 合併兩個圖像GD庫,具有在背景
- 9. 如何在沒有SVG的情況下讓兩個圖像重疊
- 10. 如何在有和沒有VBO的情況下混合繪圖
- 11. 如何在沒有合併的情況下重新綁定mercurial?
- 12. 在沒有拉伸的情況下適合div內的圖像
- 13. 有沒有辦法在不克隆的情況下合併兩個git分支?
- 14. 在php中合併兩個圖像
- 15. 在php中合併兩個圖像
- 16. 如何在沒有mecache的情況下並行請求PHP?
- 17. 用於合併兩個圖像的PHP GD庫
- 18. 在沒有ImageMagick的情況下將PDF轉換爲PHP圖像
- 19. 如何在沒有實際合併的情況下測試合併
- 20. 如何在沒有CSS的情況下曲線圖像
- 21. 如何在沒有Bg圖像的情況下滾動Unity ScrollView?
- 22. 如何在沒有故事板的情況下旋轉圖像?
- 23. 如何在沒有URL的情況下隱藏圖像控件?
- 24. 如何在沒有裝飾的情況下顯示圖像
- 25. 如何在沒有stackoverflow的情況下鏈接兩個節點?
- 26. 用PHP GD庫合併兩個PNG圖像
- 27. 在沒有任何api的情況下在jquery上傳圖像
- 28. 在沒有畫布的情況下在android中移動圖像
- 29. 在沒有PIL的情況下在Python中模糊圖像
- 30. 在沒有getImage()的情況下在Applet中加載圖像?
上http://bg.php.net/imagick良好的通話埃米爾忘了這一點 – 2010-01-23 18:29:39
如果你可以安裝imagick擴展,爲什麼你不能安裝GD?對於這個問題,爲什麼你不能使用GD?它已被默認啓用,因爲永遠... – Charles 2010-01-23 18:39:32
heh是啊 - 我真的會推動使用GD。 – 2010-01-23 19:08:34