
Originally Posted by
Huey
This quote is hidden because you are
ignoring this member.
Show
Ik heb echt geen idee wat ik moet doen man

Bestaat hier echt geen ander gratis script voor ofzo?
Dit ist geen dat ik ineen had geflanst:
Kan hoogst waarschijnlijk veel aan verbeterd worden, maar het werkt.
(een afbeelding inlezen van BMP werkt bvb niet, opslaan als BMP dan weer wel.)
PHP Code:
class Image{
public function Image($pathToImage){
$this->pathToImage = $pathToImage;
list($this->width, $this->height) = getimagesize($pathToImage);
//find the input filetype
$this->filetype = pathinfo($pathToImage);
$this->filetype = $this->filetype['extension'];
$this->setOutputQuality(100);
$this->image = $this->createImage();
}
public function setOutputQuality($quality){
//0 <= quality <= 100
if($this->filetype == 'jpg' || $this->filetype == 'jpeg'){
//its jpeg (quality means: ranges from 0 (worst quality, smaller file) to 100 (best quality, biggest file). The default is the default IJG quality value (about 75).)
$this->outputQuality = $quality;
}else{
//its png (quality means: Compression level: from 0 (no compression) to 9.)
$this->outputQuality = (10-$quality/10 <= 9)?10-$quality/10: 9;
}
}
private function createImage(){
switch($this->filetype){
case 'png':
return imagecreatefrompng($this->pathToImage);
break;
case 'jpg':
return imagecreatefromjpeg($this->pathToImage);
break;
case 'jpeg':
return imagecreatefromjpeg($this->pathToImage);
break;
case 'gif':
return imagecreatefromgif($this->pathToImage);
break;
case 'bmp': //errort
return imagecreatefromwbmp($this->pathToImage);
break;
}
}
private function saveImage($image, $location){
$filetype = pathinfo($location);
$filetype = $filetype['extension'];
switch($filetype){
case 'png':
imagepng($image, $location, $this->outputQuality);
break;
case 'jpg':
imagejpeg($image, $location, $this->outputQuality);
break;
case 'jpeg':
imagejpeg($image, $location, $this->outputQuality);
break;
case 'gif':
imagegif($image, $location);
break;
case 'bmp':
imagewbmp($image, $location);
break;
}
}
public function saveResizedBySizeCrop($pathToNewImage, $newWidth, $newHeight){
$calculatedWidth = $newWidth;
$calculatedHeight = $newHeight;
$xOffset = 0;
$yOffset = 0;
if($this->width/$newWidth < $this->height/$newHeight){
$calculatedHeight = $this->height/($this->width/$newWidth);
$yOffset = ($calculatedHeight-$newHeight)/2;
}elseif($this->width/$newWidth > $this->height/$newHeight){
$calculatedWidth = $this->width/$this->height*$newHeight;
$xOffset = ($calculatedWidth-$newWidth)/2;
}//else the ratio is correct, keep the newWidth and newHeight and 0 offset
$resizedImage = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($resizedImage, $this->image, 0-$xOffset, 0-$yOffset, 0, 0, $calculatedWidth, $calculatedHeight, $this->width, $this->height);
$this->saveImage($resizedImage, $pathToNewImage);
imagedestroy($resizedImage);
}
public function saveResizedByWidth($pathToNewImage, $newWidth){
$this->saveResizedBySizeCrop($pathToNewImage, $newWidth, $this->height/$this->width*$newWidth);
}
public function saveResizedByHeight($pathToNewImage, $newHeight){
$this->saveResizedBySizeCrop($pathToNewImage, $this->width/$this->height*$newHeight, $newHeight);
}
}
gebruik:
PHP Code:
$imjpg = new Image("in/in.jpg");
$imjpg->saveResizedByWidth("out.jpg", 300);
$imjpeg= new Image("in/in.jpeg");
$imjpeg->saveResizedByWidth("out.jpeg", 300);
$imgif = new Image("in/in.gif");
$imgif->saveResizedByWidth("out.gif", 300);
$impng = new Image("in/in.png");
$impng->saveResizedByWidth("out.png", 300);
$impng = new Image("in/in.png");
$impng->setOutputQuality(50); //van 0-100 (hoger is beter)
$impng->saveResizedBySize("smalltobig.png", 1000, 500)