473,480 Members | 1,854 Online
Bytes | Software Development & Data Engineering Community
Create Post

Home Posts Topics Members FAQ

Retrieve a Random Image URL From Google With PHP

1 New Member
A recent project involved me obtaining a random image from the Web and using it in some specific fashion. I chose to use PHP to access Google Images for a random image URL. The image could be generic or related to a specific topic.

Here's the PHP function that queries Google Images and returns an image URL:
Expand|Select|Wrap|Line Numbers
  1. function GetRandomImageURL($topic='', $min=0, $max=100)
  2. {
  3.   // get random image from Google
  4.   if ($topic=='') $topic='image';
  5.   $ofs=mt_rand($min, $max);
  6.   $geturl='http://www.google.ca/images?q=' . $topic . '&start=' . $ofs . '&gbv=1';
  7.   $data=file_get_contents($geturl);
  8.  
  9.   $f1='<div id="center_col">';
  10.   $f2='<a href="/imgres?imgurl=';
  11.   $f3='&amp;imgrefurl=';
  12.  
  13.   $pos1=strpos($data, $f1)+strlen($f1);
  14.   if ($pos1==FALSE) return FALSE;
  15.   $pos2=strpos($data, $f2, $pos1)+strlen($f2);
  16.   if ($pos2==FALSE) return FALSE;
  17.   $pos3=strpos($data, $f3, $pos2);
  18.   if ($pos3==FALSE) return FALSE;
  19.   return substr($data, $pos2, $pos3-$pos2);
  20. }
  21.  
This function generates a random number, sends that off as a "start" parameter with an image query to Google, and grabs the HTML code generated. The "gbv=1" parameter is required - without it, Google will return a generic page instead of the image results.

If any markers ($f1, $f2 or $f3) are not found, the function will return FALSE. Otherwise, the first image (from the "start" parameter) is parsed, and the corresponding URL is retrieved.

Note that Google may alter its HTML along the way, making this function obsolete. Also, large "start" values seem to exceed the number of images Google is willing to display. At the time of this writing, the maximum was about 980.

The $topic parameter allows the option of specifying a certain type of image. Pass 'vehicle' and an image of a vehicle is the target; pass 'balloon', and.. well, you get the idea. Note that this isn't guaranteed to focus on a topic, as someone may have posted a picture with 'balloon' as an image tag but without any balloons in the picture.

Although any randomiser function could be used, mt_rand() is used here due to its speed and reasonable randomness.

This example function demonstrates the use of the above GetRandomImageURL() function:
Expand|Select|Wrap|Line Numbers
  1. function ShowRandomImage($topic='')
  2. {
  3.   echo('<table border="1"><tr><td>');
  4.   $url=GetRandomImageURL($topic);
  5.   if ($url==FALSE) echo('Error while searching');
  6.   else {
  7.     echo(htmlentities($url) . '<br />');
  8.     echo('<img width="640" src="' . $url . '" />');
  9.   }
  10.   echo('</td></tr></table>');
  11. }
  12.  
  13. ShowRandomImage();
  14. ShowRandomImage('rothschild');
  15.  
Enjoy!
Apr 12 '11 #1
2 17572
dgreenhouse
250 Recognized Expert Contributor
Although I haven't tested it, it looks pretty cool.
May 25 '11 #2
makakee
1 New Member
Hmmm, this doesn't seem to work anymore. Any ideas why?
Dec 11 '13 #3

Sign in to post your reply or Sign up for a free account.

Similar topics

4
3404
by: kingofkolt | last post by:
I have a directory of images, called "random". In it are the following files: 1.gif 2.gif 3.gif 4.gif I use this script to choose a random image and display it:
6
3502
by: Olly | last post by:
I've found a basic script, however I also need to add alt and title attributes as well, how would I go about doing this? Here's the script I found: Thanks <script language="JavaScript"> <!--...
5
2561
by: Linda | last post by:
Greetings: I have found a random image script that I like. It is located here: http://www.javascriptcity.com/scripts/local/simage3.htm I'd like to edit this to have 4 different slots for...
5
2175
by: Haydnw | last post by:
Hi, I have the code below as code-behind for a page which displays two images. My problem is with the second bit of code, commented as " 'Portfolio image section". Basically, the SQL query gets...
2
2874
by: Jim in Arizona | last post by:
I was trying to create a random image generator. I'm using visual web dev express with 2.0 framework. On the web form page (mypage.aspx), I have an image control: <asp:Image ID="Image1"...
6
3059
by: comp.lang.php | last post by:
/** * Generate the random security image * * @access public * @param $willUseFilePath (default false) boolean to determine if you will be using a file path * @param mixed $filePath (optional)...
7
2330
by: Spartanicus | last post by:
Afaik the use of a <noscriptelement is frowned upon nowadays. For a JS random image changer I tried to use a replacement by having the script change the HTML src attribute value of an img element....
4
3055
by: Kim | last post by:
Random image downloader for specified newsgroup. Hi I'm writing a small script that will download random images from a specified newsgroup. I've imported yenc into the script but I can't open the...
3
3574
by: fran7 | last post by:
Hi, I have this nice code that returns a random image database record. It works great. What I am trying to do now is to be able to get the "alt" description for the image from another field. If I...
0
7054
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
6918
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
7057
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
1
6756
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
5357
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
4495
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
3008
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
1
570
muto222
php
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
0
199
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.