Php 图像调整大小后强制下载链接

Php 图像调整大小后强制下载链接,php,image,image-processing,Php,Image,Image Processing,我正在开发wordpress cms。我有一个简单的php脚本,它可以将上传的图像调整到指定的大小,并将调整后的图像输出回访问者的浏览器,这样访问者就可以右键单击下载。下面给出的是脚本的相关部分,但如果需要,我将提供完整的代码 ob_start(); imagejpeg($new, null, 100); echo '<img src="data:image/jpeg;base64,' . base64_encode(ob_get_clean()) . '">'; echo '&l

我正在开发wordpress cms。我有一个简单的php脚本,它可以将上传的图像调整到指定的大小,并将调整后的图像输出回访问者的浏览器,这样访问者就可以右键单击下载。下面给出的是脚本的相关部分,但如果需要,我将提供完整的代码

ob_start();
imagejpeg($new, null, 100); 
echo '<img src="data:image/jpeg;base64,' . base64_encode(ob_get_clean()) . '">';
echo '<br><br>RIGHT CLICK AND SAVE IMAGE<br><br>';
imagedestroy($new);
第三次更新
:发现我可以使用相对路径,因此不需要加载wordpress load.php,相应地更改了代码。这个问题仍然存在

第四次更新:按照中的解决方案中的建议尝试了此代码。同样的结果,打印出乱七八糟的内容,而不是提供下载链接。这越来越令人沮丧,我必须接近:)


最终更新:有javascript解析脚本的输出,所以我听到了所有的胡言乱语。我现在把它拆了,一切都好了

我认为一种解决方案是,在强制下载并删除文件后,使用imagejpeg()将图像保存到服务器中,您将获得如下内容:

$img = imagejpeg($resource, $file);
$size = filesize($file); 
header("Content-Type: application/force-download; name=\"" . basename($file). "\""); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: $size"); 
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\""); 
header("Expires: 0"); 
header("Cache-Control: no-cache, must-revalidate"); 
header("Pragma: no-cache"); 
readfile($file); 
unlink($file); //to delete the file that you generated
    header("Content-Disposition: attachment; filename=\"titleimg\";");
    header('Content-Type: image/jpeg');
    imagejpeg($im);
    imagedestroy($im);
其中,$file是文件路径,
取消链接
功能可删除该文件

您也可以直接强制下载,如下所示:

$img = imagejpeg($resource, $file);
$size = filesize($file); 
header("Content-Type: application/force-download; name=\"" . basename($file). "\""); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: $size"); 
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\""); 
header("Expires: 0"); 
header("Cache-Control: no-cache, must-revalidate"); 
header("Pragma: no-cache"); 
readfile($file); 
unlink($file); //to delete the file that you generated
    header("Content-Disposition: attachment; filename=\"titleimg\";");
    header('Content-Type: image/jpeg');
    imagejpeg($im);
    imagedestroy($im);

关于,

第二块代码打印出乱七八糟的内容,而不是提供链接。仍在尝试找出第一个。请尝试使用is_目录进行测试,您的路径是否相对于脚本?提示:使用DIR常量获取当前脚本directionpath不再是问题,我已经解决了。请检查我正在进行的更新,因为您可以看到我已经从第一个块中修改了您的代码。但是它只输出jibberish,根本不提示下载。有javascript解析脚本的输出,所以我得到了所有的胡言乱语。我现在把它拆了,一切都好了。但是,尽管您的解决方案(第一个代码块)有效,但下载的图像不会显示在windows photo viewer上,并在尝试在firefox中打开时显示显示错误。