我正在尝试为我开发的网站创建员工海报。我的目标是从任何文件类型(.png,.gif,.jpeg等)的服务器上的目录中获取图像,并将其复制到另一个生成的图像上,然后将其输出到浏览器。
问题在于我使用:
$final_image = imagecreatefrompng("large_background.png");
用于制作最终图像,并且由于某种原因,如果我添加jpeg' s,gif' s等类型的个人资料图像(任何类型的不是j jg),它不会'工作。图像永远不会出现在输出中。但是,如果我使用png' s确实有效。
为了解决这个问题,我尝试将图像转换为png,然后从中创建一个png,如下面的代码所示。不幸的是它没有用。个人资料图片仍未显示在背景上。
// get image from database
$image_from_database = could be a .png, .jpeg, .gif, etc.
// get the image from the profile images directory
$path = "profile_images/".$image_from_database;
// create a png out of the image
$image = imagecreatefrompng(imagepng($path));
// add the $image to my larger $final_image (which is a png)
imagecopy($final_image, $image, $x, $y, 0,0, $height, $width);
imagepng($final_image, $ouput_url);
...
有谁可以告诉我为什么这不起作用?我的个人资料图片未显示在最终图像的输出中。
我的问题,
imagecreatefrompng(imagepng(...));
是否可能?基本上我想将任何类型的图像转换为png,然后从中创建一个png。答案 0 :(得分:0)
我刚刚运行了一些本地测试...以下工作:
$src = imagecreatefromgif('test.gif');
$dest = imagecreatefrompng('test.png');
imagecopy($dest, $src, 0, 0, 0, 0, 100, 100);
header('Content-Type: image/png');
imagepng($dest);
imagedestroy($src);
imagedestroy($dest);
这样做:
$src = imagecreatefromstring(file_get_contents('test.gif'));
如果您在尝试后一个示例后仍遇到问题,请更新您的问题。除了功能代码示例之外,您正在使用的实际图像会很有用。
答案 1 :(得分:0)
在您阅读带有imagecreatefrom*
功能的图像后,原件的格式并不重要。
imagecreatefrom*
个函数返回图像资源。加载图像时,您使用的是图像的内部表示,而不是PNG,JPEG或GIF图像
如果图像成功加载imagecopy
应该没有问题。
此代码使用不同格式的图像,并且没有问题:
$img = imagecreatefrompng('bg.png');
$png_img = imagecreatefrompng('img.png');
$jpeg_img = imagecreatefromjpeg('img.jpeg');
$gif_img = imagecreatefromgif('img.gif');
/* or use this, so you don't need to figure out which imagecreatefrom* function to use
$img = imagecreatefromstring(file_get_contents('bg.png'));
$png_img = imagecreatefromstring(file_get_contents('img.png'));
$jpeg_img = imagecreatefromstring(file_get_contents('img.jpeg'));
$gif_img = imagecreatefromstring(file_get_contents('img.gif'));
*/
imagecopyresampled($img, $png_img, 10, 10, 0,0, 100, 100, 200, 200);
imagecopyresampled($img, $jpeg_img, 120, 10, 0,0, 100, 100, 200, 200);
imagecopyresampled($img, $gif_img, 230, 10, 0,0, 100, 100, 200, 200);
header('Content-Type: image/png');
imagepng($img);
你的例子
$image = imagecreatefrompng(imagepng($path));
错了。
imagepng
用于将图像资源输出为PNG图像。如果您提供路径作为第二个参数,则会创建PNG图像文件,否则它会像echo
一样打印到输出中。
imagepng
实际返回的是布尔值,表示输出是否成功
然后,您将该布尔值传递给期望文件路径的imagecreatefrompng
。这显然是错误的。
我怀疑你在加载图片时遇到问题
imagecreatefrom*
函数在失败时会返回FALSE
,如果您对此有任何问题,请检查。
也许您的图片路径与doc root相关,而您的工作目录也不同
或者你有许可问题。
或者您的图像丢失了。
从你的问题中无法分辨出来。