【问题标题】:PHP function to rotate jpeg only works once旋转jpeg的PHP函数只工作一次
【发布时间】:2023-03-03 10:45:01
【问题描述】:

我编写了这个简短的函数,我从一个电子邮件链接触发,每当有新照片上传到我的服务器时,它都会通知我:

$fotofil = $_GET['fotofil'];

$image = imagecreatefromjpeg("media/$fotofil");
$image = imagerotate($image, 270, 0);
imagejpeg($image, "media/$fotofil");

echo "The photo has been rotated:<br />";
echo "<img src='media/$fotofil' style='max-height:90vh;' />";

该函数将图像顺时针旋转 90 度并以原始文件名保存。出于某种原因,这只适用于一次。如果我再次触发相同的链接,它会从第一次触发时保持旋转。为什么?

【问题讨论】:

  • 仅仅是浏览器缓存的情况吗?文件名保持不变,因此根据缓存标头/等,您的浏览器可能不会请求新版本。尝试硬刷新(Ctrl + F5,或类似)
  • 在浏览器中打开检查器并右键单击刷新按钮并选择硬刷新。
  • 禁用浏览器缓存。或者在 src 标签后附加一些随机值,这样每次调用都会改变。
  • @Markus,对!大概就是这样,我会添加一些随机值,看看它是如何工作的。
  • 顺便说一句,它需要在 src 标签中,而不是在请求 url 中。我没想到。

标签: php imagejpeg imagecreatefromjpg


【解决方案1】:

您可以禁用浏览器的缓存或通过向源添加随机数来欺骗缓存。这样,每个请求的 URL 都会更改,浏览器将找不到它。

$rand = time() . rand();
echo "<img src='media/{$fotofil}?r={$rand}' style='max-height:90vh;' />";

【讨论】:

    猜你喜欢
    • 2011-09-16
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多