这是我的情况:图像存储在根文件夹之外。我可以使用外部php文件(应该是)访问它们然后file_get_contents
然后echo
然后img src
然后它将完美显示。
我安装了厚箱,我想要发生的是当用户点击图片时,它会在厚盒中显示放大
<a href="img.jpg" class="thickbox"><img src="my_image_processing.php?img=img.jpg" />
我正在尝试点击时创建一个图库。会发生什么是厚箱出现但图像没有。而不是图像,乱码/垃圾代码显示黑色钻石带有问号。我想这是图像的原始代码。
如何将其输出为图像而非
中的原始代码<a href> 's
补充:我刚刚玩了一下。当我删除thickbox类时,a href
实际上有效。它会在下一页正常显示图像。不幸的是,当我附加thickbox类时,它显示了thickbox,但它显示了原始代码
答案 0 :(得分:2)
在你的例子中,你直接使用jpg文件,它应该是这样的:
<a href="my_image_processing.php?img=img.jpg" class="thickbox"><img src="my_image_processing.php?img=img.jpg" />
即,读取隐藏文件夹并返回图像的php页面。
答案 1 :(得分:2)
尝试:
header ("Content-type: image/jpeg");
如果您将原始图像数据视为文本,则可能是您的浏览器无法将输出识别为图像。您可以通过上面的标题行发出正确的mime类型信号。
也可能发生错误并且错误消息使图像文件不可读(因为流而不是标头以错误消息开始)。在这种情况下,您应该在字符前看到错误消息。
答案 2 :(得分:1)
Thickbox识别由文件扩展名链接的资源的类型,以确定它是否是要显示的图像。它在确定扩展时也会忽略查询字符串。因此,您有以下选择:
my_image_processing/img.jpg
之类的网址代替my_image_processing.php?img=img.jpg
(搜索有关“mod_rewrite”的更多信息),有一件事是让Thickbox认为它加载图像,而不是页面加载到框架中,第二个是 - 当 vbence 指向时 - 将正确的mime类型添加到您使用脚本返回的图像中:您应该添加带有“Content-Type”信息的适当标头。
修改强>
负责显示图像的代码如下所示[原文如此:]:
var baseURL;
if(url.indexOf("?")!==-1){ //ff there is a query string involved
baseURL = url.substr(0, url.indexOf("?"));
}else{
baseURL = url;
}
var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;
var urlType = baseURL.toLowerCase().match(urlString);
if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images
如果您选择自行修改脚本,您可能希望添加其他类型('php'),但您应该了解其后果。
<强> EDIT2:强>
如果你使用'更改插件'选项,有一些替代方法(ColorBox),这使你能够决定不需要深入研究代码,是否应该处理* .php链接作为形象。只需查看the documentation中的photo
选项(当设置为photo=true
时,其行为应符合您的预期)。
答案 3 :(得分:0)
您可能忽略了用于显示图片的http标头。
header("Content-type: image/jpeg");
header("Content-Disposition: attachment;");