如何使用 PHP 定义动态创建的图像的下载名称
How to define download name of image created on the fly using PHP
我们正在使用 PHP 脚本 (watermark.php) 动态更改图像:
$image = imagecreatefromstring(file_get_contents('../'.$_GET['url']));
$w = imagesx($image);
$h = imagesy($image);
// Load the watermark
$watermark = imagecreatefrompng('../imgs/bgs/watermark.png');
$ww = imagesx($watermark);
$wh = imagesy($watermark);
// Insert watermark to the right bottom corner
imagecopy($image, $watermark, $w-$ww-15, $h-$wh-5, 0, 0, $ww, $wh);
// Send the image
header('Content-type: image/jpeg');
imagejpeg($image,null,95);
这被放置在一个可供 fancybox 使用的锚标签中:
<a class="fancybox-buttons" data-fancybox-group="gallery" href="scripts/watermark.php?url=SOME-IMG-TO-CHANGE-ON-THE-FLY.jpg">
<img src="imgs/btns/blanco.png">
</a>
然后 Fancybox 使用锚标记为其灯箱创建此:
<img class="fancybox-image" src="scripts/watermark.php?url=SOME-IMG-TO-CHANGE-ON-THE-FLY.jpg" style="display: inline;">
如果用户想通过右键单击保存灯箱图像,s/he 获取 watermark.php 作为要保存到的文件名。
我们如何让文件名显示为 SOME-IMG-TO-CHANGE-ON-THE-FLY.jpg 而不是 watermark.php??
我们已经尝试破解 fancybox 代码来输出这个:
<img class="fancybox-image" src="scripts/watermark.php?url=SOME-IMG-TO-CHANGE-ON-THE-FLY.jpg" download="SOME-IMG-TO-CHANGE-ON-THE-FLY.jpg" style="display: inline;">
但到目前为止运气不好。关于如何最好地破解 fancybox 代码的任何想法或关于如何解决此问题的其他建议?
Fancybox Version 版本:3.0.0 Beta 1(2013 年 1 月 29 日,星期二)
谢谢!
您需要添加 content-disposition header:
header("Content-disposition: attachment; filename='foo.jpg'");
<img>
标签将显示 /script.php?id=47
,但是当有人试图 save-as 图像时,浏览器将使用配置 header 中指定的文件名(foo.jpg
).
我们正在使用 PHP 脚本 (watermark.php) 动态更改图像:
$image = imagecreatefromstring(file_get_contents('../'.$_GET['url']));
$w = imagesx($image);
$h = imagesy($image);
// Load the watermark
$watermark = imagecreatefrompng('../imgs/bgs/watermark.png');
$ww = imagesx($watermark);
$wh = imagesy($watermark);
// Insert watermark to the right bottom corner
imagecopy($image, $watermark, $w-$ww-15, $h-$wh-5, 0, 0, $ww, $wh);
// Send the image
header('Content-type: image/jpeg');
imagejpeg($image,null,95);
这被放置在一个可供 fancybox 使用的锚标签中:
<a class="fancybox-buttons" data-fancybox-group="gallery" href="scripts/watermark.php?url=SOME-IMG-TO-CHANGE-ON-THE-FLY.jpg">
<img src="imgs/btns/blanco.png">
</a>
然后 Fancybox 使用锚标记为其灯箱创建此:
<img class="fancybox-image" src="scripts/watermark.php?url=SOME-IMG-TO-CHANGE-ON-THE-FLY.jpg" style="display: inline;">
如果用户想通过右键单击保存灯箱图像,s/he 获取 watermark.php 作为要保存到的文件名。
我们如何让文件名显示为 SOME-IMG-TO-CHANGE-ON-THE-FLY.jpg 而不是 watermark.php??
我们已经尝试破解 fancybox 代码来输出这个:
<img class="fancybox-image" src="scripts/watermark.php?url=SOME-IMG-TO-CHANGE-ON-THE-FLY.jpg" download="SOME-IMG-TO-CHANGE-ON-THE-FLY.jpg" style="display: inline;">
但到目前为止运气不好。关于如何最好地破解 fancybox 代码的任何想法或关于如何解决此问题的其他建议?
Fancybox Version 版本:3.0.0 Beta 1(2013 年 1 月 29 日,星期二)
谢谢!
您需要添加 content-disposition header:
header("Content-disposition: attachment; filename='foo.jpg'");
<img>
标签将显示 /script.php?id=47
,但是当有人试图 save-as 图像时,浏览器将使用配置 header 中指定的文件名(foo.jpg
).