计算图像视图

时间:2011-11-15 15:09:55

标签: php image views

我想要一个图像代码来计算查看图像的次数,无论图像在哪个站点上找到。我想使用img src标签,并让src指向一个计算该视图的php页面,然后返回要查看的图像。我在想这样的事情:

 <img src="www.mywebsiteurl.com/something.php" /> 

我如何编写“something.php”以便返回正确的图像文件?我知道如何记录页面视图,但如果我必须在这种情况下做一些不同的事情,请告诉我。

6 个答案:

答案 0 :(得分:2)

您的脚本需要:

  1. 记录命中。
  2. 设置输出的内容类型(header('Content-Type: image/jpeg');
  3. 输出图像(readfile( $path_to_image ));
  4. 例如,请参阅readfile documentationOutput an Image in PHP

答案 1 :(得分:1)

从php加载图像/文件比正常加载文件慢。

主要缺点:

  • 由于动态查询大多数浏览器不支持动态查询,因此无法缓存图像。
  • 服务器和apache上的开销。

如果您使用数据库并希望在图像加载后增加列,则人们可以反复加载图像。因此,您需要在每个查询中使用条件。

替代解决方案

在要显示图像的页脚中输入此代码

ajax电话

$.get("inc_img_view.php?img_id="+<?php echo $img_id; ?>);

答案 2 :(得分:0)

这是您可以拥有的最准确的版本:

<?php

header('Content-type: image/jpeg');
readfile('somepic.jpg');

答案 3 :(得分:0)

您可以使用类似于www.mywebsiteurl.com/image_renderer.php?url=url_to_image的网址调用图片。

image_rendered.php:

<?php
header("Content-Type: image/jpeg");
$url = urldecode($_GET['url']);

$headers = array(  
"GET ".$url." HTTP/1.1",   
"Content-Type: text/xml; charset=UTF-8",  
"Accept: text/xml",
"Cache-Control: no-cache",  
"Pragma: no-cache"
);

$ch = curl_init($url);  
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
curl_setopt($ch, CURLOPT_POST, false);  
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);

$r = curl_exec($ch);

// you can connect to your database and increment the number of times this image was viewed

echo $r;
?>

希望这会指引你走向正确的方向。

答案 4 :(得分:0)

是的,你有个好的开始。 我会做这样的事情

<img src="www.mywebsiteurl.com/image_counter.php?src=image.jpg" /> 

在image_counter.php中,取$src = $_GET['src']作为图片来源。

然后为数据库中该图像命中+1。

然后做

header('Content-type: image/jpeg');
readfile($src);

答案 5 :(得分:0)

这样的事情应该有效:

<?php

$file = $_GET['img'];
$path = "images/";

// do an increment of views on the image here - probably in a database?

$exifImageType = exif_imagetype($path.$file);
if ($exifImageType !== false) {
    $type = image_type_to_mime_type($exifImageType);
}

header('Content-Type: $type');
echo file_get_contents($path.$file);

注意:这会产生类似的结果:

<img src="getimage.php?img=image.jpg" />

在递增视图后显示正确的图像。

您可以随时添加一些.htaccess,以便对/ images /的所有调用都通过您的图像文件。这意味着你可以保持URL看起来好像它正在获得一个实际的图像文件(例如/images/logo.jpg将被重写为实际通过getimage.php?img = logo.jpg)