Volg de onderstaande video om te zien hoe je onze site als web-app op je startscherm installeert.
Opmerking: Deze functie is mogelijk niet beschikbaar in sommige browsers.
<?php
$avatar = new Radiance_Image('ava.jpg');
$avatar->smartResize(60,60);
$avatar->merge('sitelogo.gif', 20, 20);
$avatar->save('fullava.jpg');
class Radiance_Image
{
private $_image;
private $_width;
private $_height;
private $_type;
private $_attr;
/**
* Constructor
*
* @param string URL to base image
*/
public function __construct($url = false)
{
if($url)
{
$image = $this->convertToImage($url);
$this->_image = $image['image'];
$this->_width = $image['width'];
$this->_height = $image['height'];
$this->_type = $image['type'];
$this->_attr = $image['attr'];
}
}
/**
* Convert given file to GD Image format and return properties
*
* @param string URL of image to convert
* @return array of image data or false on error
*/
private function convertToImage($url)
{
if(!file_exists($url))
{
return false;
}
list($image['width'], $image['height'], $type, $image['attr']) = getimagesize($url);
switch ($type)
{
case 1 :
$image['type'] = 'gif';
$image['image'] = imagecreatefromgif($url);
break;
case 2 :
$image['type'] = 'jpg';
$image['image'] = imagecreatefromjpeg($url);
break;
case 3 :
$image['type'] = 'png';
$image['image'] = imagecreatefrompng($url);
break;
case 6 :
$image['type'] = 'bmp';
$image['image'] = imagecreatefromwbmp($url);
break;
default :
$image['type'] = false;
$image['image'] = false;
}
if($image['image'] !== false)
{
return $image;
}
return false;
}
/**
* Output current image to given file
*
* @param string
* @param unknown_type $type
* @return unknown
*/
public function save($location, $type = false)
{
if($type === false)
{
$type = $this->_type;
}
switch($type)
{
case 'gif' :
imagegif($this->_image, $location, 100);
break;
case 'jpg' :
imagejpeg($this->_image, $location, 100);
break;
case 'png' :
imagepng($this->_image, $location, 100);
break;
case 'bmp' :
imagewbmp($this->_image, $location, 100);
break;
default :
return false;
}
}
/**
* Resize image to given width & height, does NOT keep aspect ratio
*
* @param int new width
* @param int new height
*/
function resize($newWidth, $newHeight)
{
$image = $this->_image;
$newImage = imagecreatetruecolor($newWidth,$newHeight);
imagecopyresampled($newImage, $image, 0, 0, 0, 0, $newWidth, $newHeight, $this->_width, $this->_height);
$this->_width = $newWidth;
$this->_height = $newHeight;
$this->_image = $newImage;
}
/**
* Attempt to resize the image while keeping aspect ratio
*
* @param new maximum width
* @param new maximum height
*/
public function smartResize($maxWidth, $maxHeight)
{
$width = $this->_width;
$height = $this->_height;
$scale = $width / $height;
if ( $height > $maxHeight )
{
$shrink = $maxHeight / $height;
$height = $maxHeight;
$width = (int) $width * $shrink;
}
if ( $width > $maxWidth )
{
$shrink = $maxWidth / $width;
$width = $maxWidth;
$height = (int) $height * $shrink;
}
$this->resize($width, $height);
}
/**
* Merge image into the current one
*
* @param string URL to file
* @param int X coordinate to place upperleft corner
* @param int Y coordinate to place upperleft corner
* @param int % Transparency of merged image
*/
public function merge($url, $x, $y, $transparancy = 100)
{
$small = $this->convertToImage($url);
imagecopymerge($this->_image, $small['image'], $x, $y, 0,0, $small['width'], $small['height'], $transparancy);
}
public function getWidth()
{
return $this->_width;
}
public function getHeight()
{
return $this->_height;
}
}
?>
Radiance zei:Noot : losjes gebaseerd op een image class van servi
Ja, uw originele klasse werkte redelijke anders, maar heeft mij wel wat werk bespaart qua opzoeken van GD functies en idd dat smartresizen, ere wie ere toekomtservi zei:Had ge dat niet gezegd, ik had het eigenlijk nooit opgemerkt feitelijk![]()
( Ik herken eigenlijk enkel die smartResize-functie om eerlijk te zijn )

.