是否有任何php函数返回图像句柄,以便我可以在img src html标记中使用它?
我尝试了这个php方法,但它在运行代码时会向浏览器返回一个图像 但是,我需要一个返回图像URL的方法,以便我可以在img标记中使用它 目前我必须使用-是否有任何php函数返回图像句柄,以便我可以在img src html标记中使用它?,php,image,php-gd,Php,Image,Php Gd,我尝试了这个php方法,但它在运行代码时会向浏览器返回一个图像 但是,我需要一个返回图像URL的方法,以便我可以在img标记中使用它 目前我必须使用- <img src="siteurl/myphpfile.php" /> 有两种更明显的方法来解决这个问题 将渲染图像写入文件 这可以使用imagejpeg,通过传入文件名的第二个参数来实现,例如: $im = imagecreatetruecolor(..); // .. imagejpeg($im, 'image.jpg')
<img src="siteurl/myphpfile.php" />
有两种更明显的方法来解决这个问题
imagejpeg
,通过传入文件名的第二个参数来实现,例如:
$im = imagecreatetruecolor(..);
// ..
imagejpeg($im, 'image.jpg');
.jpg
(例如/dynamic/image.jpg
传递到脚本,脚本将呈现它)。如果需要,您甚至可以将文件名(image.jpg
)作为脚本的参数,告诉脚本如果图像是动态的,将呈现什么显然,如果您的图像需要根据请求而有所不同,那么#2是更好的选择。但是,如果您的图像是静态的(即您的
imagettftext
总是在同一图像上写入相同的文本),则建议使用#1更快。有两种更明显的方法来解决此问题
imagejpeg
,通过传入文件名的第二个参数来实现,例如:
$im = imagecreatetruecolor(..);
// ..
imagejpeg($im, 'image.jpg');
.jpg
(例如/dynamic/image.jpg
传递到脚本,脚本将呈现它)。如果需要,您甚至可以将文件名(image.jpg
)作为脚本的参数,告诉脚本如果图像是动态的,将呈现什么显然,如果您的图像需要根据请求而有所不同,那么#2是更好的选择。但是,如果您的图像是静态的(即您的
imagettftext
总是在同一图像上写入相同的文本),则建议使用#1更快。您的PHP页面可以返回图像:
<?php
$filename = "my_image.png";
$image = fopen($filename, 'rb');
header("Content-Type: image/png");
header("Content-Length: " . filesize($filename));
fpassthru($image);
您的PHP页面可以返回图像:
<?php
$filename = "my_image.png";
$image = fopen($filename, 'rb');
header("Content-Type: image/png");
header("Content-Length: " . filesize($filename));
fpassthru($image);
我将代码嵌入到一个方法中,因此我需要返回'image.jpg';从方法中,然后在我的html下使用它??正确,显然,如果你的image.jpg
不总是image.jpg
,你只需要这样做。只是为了信息,我在邮件中为内容类型html添加标题。因此,这与我编辑原始代码不同,显然不起作用,如果您将此作为电子邮件发送,您需要在电子邮件中提供完整路径(包括http://www.domain.com/
)…是的,非常正确..刚刚解决了它。现在..请在您的答案中添加这一行,然后我将接受您的答案:)+1已将代码嵌入到方法中,因此我需要返回“image.jpg”;从方法中,然后在我的html下使用它??正确,显然,如果你的image.jpg
不总是image.jpg
,你只需要这样做。只是为了信息,我在邮件中为内容类型html添加标题。因此,这与我编辑原始代码不同,显然不起作用,如果您将此作为电子邮件发送,您需要在电子邮件中提供完整路径(包括http://www.domain.com/
)…是的,非常正确..刚刚解决了问题。现在..请在你的答案中添加这一行,然后我将接受你的答案:)+1我已经尝试过了,我在一封电子邮件中发送该图像,所以它在两次发送电子邮件时所做的工作可能是代码其他部分的问题。您可以通过在浏览器中直接访问该URL来检查它是否正确。如果只是图像打开,就像您直接访问图像一样,那么它已确认。您的功能不好,您正在编辑图像,保存它,然后返回mynameimg.jpg
。因为你是通过电子邮件发送的,所以你需要返回图像的完整网络路径!例如:http://www.mywebsite.com/image/path/myname.jpg
@igoran你能建议更多需要改变的地方吗..这次我完全不在了:(我试过这个,我在电子邮件中发送那个图像,所以它发送两次电子邮件的功能可能是你代码的其他部分的问题。你可以通过在浏览器中直接访问那个URL来检查是否有问题。如果只是图像打开就好像你直接访问了图像,那么它就被确认了。你的功能不好,你正在编辑图像,saving它,然后返回mynameimg.jpg
。因为您是在电子邮件中发送它,所以需要返回图像的完整web路径!例如:http://www.mywebsite.com/image/path/myname.jpg
@igoran你能建议更多需要改变的地方吗..这次我完全不在了:(
<img src="my_image_return_page.php?image=<?=$image_id?>">
<?php
//Get image id
$imageId = $_GET['id'];
//You search for your image in database here, and return the location
//Additionally if image with that id wasn't found, you can return location of some image that says "Ooops, we couldn't find image you were looking for".
//Say you save image's location in $imageLocation variable.
//Get pathinfo of your image file
$pathInfo = pathinfo($imageLocation);
$extension = $pathInfo['extension'];
if ($extension == "jpg") {
$contentType = "jpeg";
} elseif ($extension == "png") {
$contentType = "png";
} elseif ($extension == "gif") {
$contentType = "gif";
} else {
//Handle error here if format isn't recognized
}
//Set content type
header("Content-Type: image/".$contentType);
//Set content length
header("Content-Length: ". filesize($imageLocation));
//This is shorter way then using fopen, but has the same result
echo file_get_contents($imageLocation);