如何在没有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