Help with fusion of image resize and watermark

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
olidenia
Forum Newbie
Posts: 19
Joined: Mon Apr 28, 2008 12:38 pm

Help with fusion of image resize and watermark

Post by olidenia »

I have two scripts i would like to fuse:

I have an image url that calls a script to resize it:

<img class=\"flt\" src=\"img.php?w=75&h=75&constrain=1&img={$img['url']}\" title=\"Test\" >

and it calls this cript:

Code: Select all

<?php
header ("Content-type: image/jpeg");
/*
JPEG / PNG Image Resizer
Parameters (passed via URL):
 
img = path / url of jpeg or png image file
 
percent = if this is defined, image is resized by it's
          value in percent (i.e. 50 to divide by 50 percent)
 
w = image width
 
h = image height
 
constrain = if this is parameter is passed and w and h are set
            to a size value then the size of the resulting image
            is constrained by whichever dimension is smaller
 
Requires the PHP GD Extension
 
Outputs the resulting image in JPEG Format
 
By: Michael John G. Lopez - http://www.sydel.net
Filename : imgsize.php
*/
 
$img = $_GET['img'];
$percent = $_GET['percent'];
$constrain = $_GET['constrain'];
$w = $_GET['w'];
$h = $_GET['h'];
 
// get image size of img
$x = @getimagesize($img);
// image width
$sw = $x[0];
// image height
$sh = $x[1];
 
if ($percent > 0) {
    // calculate resized height and width if percent is defined
    $percent = $percent * 0.01;
    $w = $sw * $percent;
    $h = $sh * $percent;
} else {
    if (isset ($w) AND !isset ($h)) {
        // autocompute height if only width is set
        $h = (100 / ($sw / $w)) * .01;
        $h = @round ($sh * $h);
    } elseif (isset ($h) AND !isset ($w)) {
        // autocompute width if only height is set
        $w = (100 / ($sh / $h)) * .01;
        $w = @round ($sw * $w);
    } elseif (isset ($h) AND isset ($w) AND isset ($constrain)) {
        // get the smaller resulting image dimension if both height
        // and width are set and $constrain is also set
        $hx = (100 / ($sw / $w)) * .01;
        $hx = @round ($sh * $hx);
 
        $wx = (100 / ($sh / $h)) * .01;
        $wx = @round ($sw * $wx);
 
        if ($hx < $h) {
            $h = (100 / ($sw / $w)) * .01;
            $h = @round ($sh * $h);
        } else {
            $w = (100 / ($sh / $h)) * .01;
            $w = @round ($sw * $w);
        }
    }
}
 
$im = @ImageCreateFromJPEG ($img) or // Read JPEG Image
$im = @ImageCreateFromPNG ($img) or // or PNG Image
$im = @ImageCreateFromGIF ($img) or // or GIF Image
$im = false; // If image is not JPEG, PNG, or GIF
 
if (!$im) {
    // We get errors from PHP's ImageCreate functions...
    // So let's echo back the contents of the actual image.
    readfile ($img);
} else {
    // Create the resized image destination
    $thumb = @ImageCreateTrueColor ($w, $h);
    // Copy from image source, resize it, and paste to image destination
    @ImageCopyResampled ($thumb, $im, 0, 0, 0, 0, $w, $h, $sw, $sh);
    // Output resized image
    @ImageJPEG ($thumb);
}
?>
 
I have another url:

<img style=\"max-width:500px;\" class=\"flt\" src=\"image.php?main=$sw&watermark=watermark.png\" title=\"Test\">

That calls this script:

Code: Select all

<?php
 
    # include our watermerking class
    include 'api.watermark.php';
    $watermark          = new watermark();
 
    # create image objects using our user-specified images
    # NOTE: we're just going to assume we're dealing with a JPG and a PNG here - for example purposes
    $main_img_obj               = imagecreatefromjpeg(  $_GET['main']           );
    $watermark_img_obj  = imagecreatefrompng(   $_GET['watermark']  );
 
    # create our watermarked image - set 66% alpha transparency for our watermark
    $return_img_obj         = $watermark->create_watermark( $main_img_obj, $watermark_img_obj, 66 );
 
    # display our watermarked image - first telling the browser that it's a JPEG, 
    # and that it should be displayed inline
    header( 'Content-Type: image/jpeg' );
    header( 'Content-Disposition: inline; filename=' . $_GET['src'] );
    imagejpeg( $return_img_obj, '', 50 );
 
?>

At the moment I'm only using the second script for watermarking with style=\"max-width:500px;\" but, on large dimension images the watermark is tiny and the images take a long time to load, what I want to do is fuse the both scripts, but just don't know where to start, any help is most appreciated. Thanks
olidenia
Forum Newbie
Posts: 19
Joined: Mon Apr 28, 2008 12:38 pm

Re: Help with fusion of image resize and watermark

Post by olidenia »

Any one? No ideas at all?
archonis
Forum Newbie
Posts: 1
Joined: Fri Mar 05, 2010 5:28 pm

Re: Help with fusion of image resize and watermark

Post by archonis »

I am also looking for the same thing. Any help?
User avatar
pickle
Briney Mod
Posts: 6445
Joined: Mon Jan 19, 2004 6:11 pm
Location: 53.01N x 112.48W
Contact:

Re: Help with fusion of image resize and watermark

Post by pickle »

[url=http://forums.devnetwork.net/viewtopic.php?t=30037]Forum Rules[/url] Section 1.1 wrote:4. All users of any level are restricted to bumping (as defined here) any given thread within twenty-four (24) hours of its last post. Non-trivial posts are not considered bumping. A bump post found in violation will be deleted, and you may or may not receive a warning. Persons bumping excessively be considered as spammers and dealt with accordingly.
Real programmers don't comment their code. If it was hard to write, it should be hard to understand.
Post Reply