Re: Watermark with GD
| From: | Tamara Temple | Date: | Sat, 30 Oct 2010 06:11:53 +0000 |
| Subject: | Re: Watermark with GD | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-309147@lists.php.net to get a copy of this message | ||
On Oct 29, 2010, at 2:44 PM, Gary wrote:
"Adam Richardson" <simpleshot@gmail.com> wrote in message news:AANLkTi=keNXt7yEwrZtcm4+hyifRLQhOZxSe7Ufmqjp=@mail.gmail.com... On Fri, Oct 29, 2010 at 3:05 PM, Gary <gpaul@paulgdesigns.com> wrote:I'd really need to know more about this application to help. If you are calling the image from a database (does this mean you have the image's file spec saved in the database, or you actually storing the image data in the database?), you need to use a query to do that. Is the imagesDetail.php script being called by something else that already queried the database and put the file spec in the src query string argument? Before you dump the query string argument directly into the imagecreatefromjpeg() funciton, you should verify that it exists: if (isset($_GET['src'[) && (!empty($_GET['src'[) { $src = $_GET['src']; if (fileexists($src)) {I am trying to get the watermark to work, however I am having a problem in that the image is being called from a database (image sits in images file). The script in question is this $image = imagecreatefromjpeg($_GET['src']); However it produces an error message of Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: Filename cannot be empty in /home/content/a/l/i/alinde52/html/imagesDetail.php on line 233First things first. It looks like there's nothing in $_GET['src']. From where are you getting the value 'src'? Adam ** Adam Thanks for your reply, that is my question, what is to replace ['src'] if I am calling the image from a database. Gary
$image = imageceatefromjpeg($src);if ($image === FALSE) { # process error from imagecreatefromjpeg }
} else {
# process missing image
}
} else {
# process missing query string parameter} This is all prediated on the idea that something is calling your imageDetail.php script with the source path for the image in question. If that is not the case, and you need to in fact query the database for the source path of the image, then you need to do a database query. Not knowing anything about how your database is set up, I'll take a stab at a generic method of doing it. Somehow, imageDetail.php needs to know what image to get. Let's assume you are calling it from a gallery that has several images displayed. Part of the information needed is some what to identify the image's record in the database. Let's assume you have images stored with an id, that is not null and autoincrements when you store a new image. Here's a sample schema: CREATE TABLE
photos (
id INT AUTO_INCREMENT NOT NULL,
src VARCHAR(255) NOT NULL,
created TIMESTAMP NOT NULL DEFAULT 0,
updated TIMESTAMP NOT NULL DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP
PRIMARY KEY (id)
);
Of course, you would probably want to store a lot more info about an image, but this will do for explanation.
Let's say you have a gallery shown at your application's index.php program. In the html it generates, you may have something like this for any particular thumbnail:
<a href="imageDetail.php?id=25"><img src="thumbs/imageABC.jpg"></a>
This is making some assumptions:
* you have image thumbnails for each image stored in the subdirectory thumbs/
* you've figured out somehow that the id for thumbs/imageABC.jpg is 25
When the user clicks on the image, they get taken to your imageDetail.php script, with the query string paramter id set to 25.
In PHP you would then do:
if (isset($_GET['id'] && (!empty($_GET['id'] && is_numeric($_GET['id']) {
$id = $_GET['id'];
$sql = "SELECT * FROM photos WHERE id=".$id." LIMIT 1";
$result = mysql_query($sql,$db);
if ($result) {
$imagedata = mysql_fetch_array($result,MYSQL_ASSOC);
$src = $imagedata['src'];
if (isset($src) && !empty($src) && fileexists($src)) {
$image = imagecreatefromjpeg($src);
# do stuff with image
} else {
# handle invalid src data
}
} else {
# handle error from query
}
} else {
# handle invalid id paramter on script
}
Note: some people like to handle error conditions before moving on to working with the successful state. It's a matter of style. Either works.
Hope this helps.
Tamara