Reputation: 103
Once again, here I am with a simple issue that I cannot solve because the search terms I use apparently don't match the ones that have been used before. What I want to create is just a tiny piece of script making it possible to change the image width using the URL.
An example can be found on http://waarneming.nl/fotonew/0/2639780.jpg. If you add the variables ?w=100&h=100, the image is resized. Important to mention is that I need no cropping (which doesn't happen in the example too, even though 100x100 is of course not the right ratio). The only thing to happen is what can be done with CSS and HTML too: change height and width of a larger picture. But because I need the resized image in another script, I want to use URL variables.
Hope you can help!
Upvotes: 1
Views: 21371
Reputation: 2494
Here's a few links that might help:
net.tutsplus.com: image resizing made easy with php
code-sucks.com: use php to resize an image
Upvotes: 0
Reputation: 15389
Use the SimpleImage library:
<?php
/*
* File: SimpleImage.php
* Author: Simon Jarvis
* Copyright: 2006 Simon Jarvis
* Date: 08/11/06
* Link: http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
* http://www.gnu.org/licenses/gpl.html
*
*/
class SimpleImage {
var $image;
var $image_type;
function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {
$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}
function output($image_type=IMAGETYPE_JPEG) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image);
}
}
function getWidth() {
return imagesx($this->image);
}
function getHeight() {
return imagesy($this->image);
}
function resizeToHeight($height) {
$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
}
function resizeToWidth($width) {
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}
function scale($scale) {
$width = $this->getWidth() * $scale/100;
$height = $this->getheight() * $scale/100;
$this->resize($width,$height);
}
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
}
?>
Then, try this:
<?php
include('SimpleImage.php');
$image = new SimpleImage();
$image->load($_GET['file']);
$image->resize($_GET['width'], $_GET['height']);
$image->output();
?>
In order to call the script, you would pass the filename, width and height through your URL. Assuming the script is named foo.php:
http://www.example.com/foo.php?file=picture_name.jpg&width=100&height=100
Upvotes: 6
Reputation: 463
You can get the params in your javascript and assign it to the image. Something like:
function gup( name )
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
and then:
var imagelengh = gup('w')
$('#image').width(w)
Upvotes: 0