合并三个或更多图像 -- PHP

Posted

技术标签:

【中文标题】合并三个或更多图像 -- PHP【英文标题】:Merging Three or More Images -- PHP 【发布时间】:2011-11-17 17:45:03 【问题描述】:

对于我的网站,我一直在尝试将人们的角色(目前由几张由 CSS 移动的图片组成)合并到一张图片中,以使我的生活更轻松。目前不起作用的代码块如下:

                    $template = $charRow['template'];
                    $gender = $charRow['gender'];
                    $shirt = $charRow['shirt'];
                    $pants = $charRow['pants'];
                    $hat = $charRow['hat'];

                    $templatePic = imagecreatefrompng("Templates/".$template);

                    if (!empty($shirt)) 
                        $shirtPic = imagecreatefrompng($shirt);
                        imagecopy($templatePic,$shirtPic,0,0,0,0,imagesx($templatePic),imagesy($templatePic));
                    
                    if (!empty($pants)) 
                        $pantsPic = imagecreatefrompng($pants);
                        imagecopy($templatePic,$pantsPic,0,0,0,0,imagesx($templatePic),imagesy($templatePic));
                    
                    if (!empty($hat)) 
                        $hatPic = imagecreatefrompng($hat);
                        imagecopy($templatePic,$hatPic,0,0,0,0,imagesx($templatePic),imagesy($templatePic));
                    

                    imagePNG($templatePic, 'Images/'); //Problem line...

这是 php 给我的错误:

警告:imagepng() [function.imagepng]:无法打开“Images/”进行写入:是 PathToParentFolderOfFollowingFile/testFile.php 中第 139 行的目录

这个错误究竟是什么意思,如何解决?

注意:$charRow 不是问题所在。获取它的查询并没有显示给你们所有人。

另外...您如何使透明度起作用?我正在使用的所有文件都是具有透明度的 PNG 文件。

【问题讨论】:

想到两件事 - 您的 php 应用程序没有访问图像目录的权限,或者您没有正确的图像目录路径。 类似问题已回答here。 【参考方案1】:

出现该错误是因为您需要提供文件名,而不是目录。 imagePNG 函数不知道将此图像保存为什么文件。

试试

imagepng($templatePic, 'Images/anActualFileName.png');

我看到the docs 说“路径”,这可能会造成混淆,但在包含文件名的 unix 术语中。如果你只是给它一个目录,它会叫什么文件?

【讨论】:

它现在以各种方式工作,但事实上它没有显示透明度......我该如何解决这个问题? 在 SO 上进行快速搜索 - 你会惊讶于你的发现! ;) ***.com/questions/1705098/… 但是我的图片已经有透明背景了呢?

以上是关于合并三个或更多图像 -- PHP的主要内容,如果未能解决你的问题,请参考以下文章

PHP 将2个或更多图像合并为一个

php多图合并

Arangodb AQL 连接、合并、嵌入嵌套的三个或更多集合

用 PHP 合并两个图像

使用图像干预的多图像上传。我尝试上传多张图片但无法上传,因为我不知道如何,任何帮助将不胜感激

请求帮助解决opencv处理图像融合问题