473,394 Members | 1,679 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes and contribute your articles to a community of 473,394 developers and data experts.

Retrieve a Random Image URL From Google With PHP

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 17558
dgreenhouse
250 Expert 100+
Although I haven't tested it, it looks pretty cool.
May 25 '11 #2
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
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
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
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
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
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
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
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
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
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
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
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
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
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
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

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.