Css 指向随机图像的URL
我想做一些我在web开发中没有见过的事情,但这似乎是可能的我想要一个可以放入任意HTMLCss 指向随机图像的URL,css,url,image,Css,Url,Image,我想做一些我在web开发中没有见过的事情,但这似乎是可能的我想要一个可以放入任意HTML标记或CSS背景图像属性的URL,当访问该属性时,它是一个随机图像。我不希望页面指向或重定向到随机图像,也不希望它显示或嵌入随机图像,因为这些东西不符合上述要求。我见过使用Javascript在网页中显示随机图像以交换属性或隐藏元素的解决方案,但这必须使整个页面成为图像,没有前面或后面的二进制或ASCII数据。我希望它能被那些对编程一无所知的人使用。我的目标是这样的: http://example.com/r
标记或CSS背景图像
属性的URL,当访问该属性时,它是一个随机图像。我不希望页面指向或重定向到随机图像,也不希望它显示或嵌入随机图像,因为这些东西不符合上述要求。我见过使用Javascript在网页中显示随机图像以交换属性或隐藏元素的解决方案,但这必须使整个页面成为图像,没有前面或后面的二进制或ASCII数据。我希望它能被那些对编程一无所知的人使用。我的目标是这样的:
http://example.com/randomImage/
理论上,每次在CSS或HTML中加载带有此URL的页面时,引用元素中将显示一个随机图像。这样,如果您有多个
元素,或者有多个元素的背景图像
引用此页面,则它们都应随机显示不同的图像
我的第一个想法是使用PHP(在下面描述的结构中)查看特定目录,随机选取一个图像文件,并回显其二进制数据如果这是可能的,那么我将如何着手进行?如果没有,那么还有人有其他想法吗?
作为伪代码,我的主要想法是:
<?PHP
$chosenImage = getRandomFileFrom("./rand/");
$bytes = readFileAsBinary($chosenImage);
foreach($bytes as $byte){
echo $byte;
}
?>
我不在乎真随机或伪随机。它可以循环每一次为所有我关心;在这项工作中,我所需要的是多个图像可以作为一个URL引用您当然可以用PHP实现这一点 首先,选择一个随机文件(请参见) 然后可以使用PHP
readfile
函数将其发送给用户。您可以在这里详细阅读:参见示例1,我在下面对其进行了略微修改:
function outputImage( $filename ) {
header('Content-Description: File Transfer');
header("Content-type: image/jpeg");
header('Content-Disposition: attachment; filename='.basename($filename ));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filename ));
ob_clean();
flush();
readfile($filename );
exit;
}
然后把它们放在一起:
// Get a filename
$filename = random_pic();
// Check that a file was found
if (!$filename) {
header('HTTP/1.0 404 Not Found');
die();
}
// Output the image
outputImage( $filename );
您还可以更改$files=glob($dir./*.jpg')
查找不同的图像格式,但您还必须更改输出图像
以检测格式,并将内容类型
类型标题设置为图像/jpeg
或图像/png
等
如果您只提供一种类型的图像,那么您可以将Apache设置为处理对PHP脚本的“randomImage.jpg”请求,然后客户端浏览器将完全不明智。要了解更多信息,请查看Apache重写规则(尽管您当然会做相反的操作):
我还没有测试过这段代码,但它应该可以正常工作。希望有帮助 您正在运行Apache吗?有一个Apache模块处理这种事情 看起来没问题,但您可以使用
fpassthru
读取所有字节,并更高效地将它们写入输出。另外,请记住正确设置内容类型标题:)如果您知道如何执行此操作,可以将其作为答案发布吗?抱歉,太忙了,但您的思路是正确的。不,我使用的是ASP.NET。不过,谢谢!我会记住,如果我切换:3我正在尝试,但我没有看到任何东西…使用firebug,我看到它给出了一个404未找到。尝试在设置404头的if(!$filename)
中回显某些内容。它看起来像是glob($dir./*.jpg')
,它在$dir
目录中搜索扩展名为的文件。jpg返回false,请看,是的,glob返回false。我将“imagedir”改为“/\u img/bg”,但这似乎没有起到任何作用。现在,该文件夹中只有两个PNG文件(我还将对jpg/jpeg的引用更改为PNG),您正在运行ASP.NET,对吗?请尝试为glob提供图像目录的完整路径和/或相对路径,如:“C:\www\u img\bg”或“.\..\u img\bg”。如果您在Windows上,请确保所有路径都是反斜杠(同时尝试将“/*.jpg”中的路径更改为“*.jpg”)。如果您使用的是Linux,则需要使用正向斜杠。或者,甚至可以尝试完全删除glob中的路径,将图像文件放置在与PHP脚本相同的目录中,并使用:$files=glob('*.jpg')代码>
// Get a filename
$filename = random_pic();
// Check that a file was found
if (!$filename) {
header('HTTP/1.0 404 Not Found');
die();
}
// Output the image
outputImage( $filename );