Gå til innhold

resize av bilde med php


Anbefalte innlegg

Videoannonse
Annonse

$imageDestination = "/some/where/";
$imageTnName = "navn_på_bilde.jpg"; //navn på thumbnail
$imageTmpName = $_FILES['bilde']['tmp_name']; //eller noe

$imageOrigSize = getimagesize($imageTmpName); 
$imageOrigWidth = $imageOrigSize[0]; 
$imageOrigHeight = $imageOrigSize[1]; 
 
$imageTnWidth = 100; //Bredden på resized bilde.
$imageTnHeight = 100; //Høyden på resized bilde.

$imageResized = ImageCreate($imageTnWidth, $imageTnHeight);
imagecopyresized($imageResized, ImageCreateFromJpeg($imageTmpName), 0 , 0 , 0 , 0, $imageTnWidth, $imageTnHeight, $imageOrigWidth, $imageOrigHeight); 

 
Imagejpeg($imageResized, "$imageDestination$imageTnName"); 
ImageDestroy($imageResized);

Dette forutsetter at serveren har GD biblioteket installert, noe du kan finne ut av med phpinfo(), og at det er et JPG bilde. Det finnes andre måter å gjøre det på også, men denne er den eneste jeg kan.

 

Tok det rett fra et større script jeg laget, så alt er kanskje ikke helt selvforklarende, men bare spør.

Endret av Edorph
Lenke til kommentar

Ja, det ble kanskje litt uklart det der..

 

På min side bruker jeg det for å lage et thumbnail av ett bilde som jeg laster opp via en <input type='file' name='bilde'>, derav $_FILES['bilde']['tmp_name'] (altså et og et bilde av gangen). Jeg kan altfor lite om directory-funksjonene i PHP, så jeg er ikke sikker på hvordan jeg ville laget et script som tok alle bildene i en mappe..

 

Se forresten http://no2.php.net/gd også, der står det meste om GD i hvertfall.

Lenke til kommentar

index.php

<?php
require_once("resizer.class.php"); //require class
require_once("func.inc.php"); //require function

$img = directory('./', array('.gif', '.png', '.jpg'));

foreach($img as $link => $name) {

   $size = GetImageSize("./$name");
   $to = 100;
   if(($size[0]/$to) > ($size[1]/$to)){
     $w=$to;
     $h= round($size[1]/($size[0]/$to));
   }else{
     $w = round($size[0]/($size[1]/$to));
     $h = $to;
   }
//$resize = new resize(true, './resizer.php');
$thumb=new thumbnail("./$name"); //generate image_file, set filename to resize
$thumb->size_width($w);	// set width for thumbnail, or
$thumb->size_height($h); // set height for thumbnail, or
$thumb->size_auto(200);	// set the biggest width or height for thumbnail
$thumb->jpeg_quality(75); // [OPTIONAL] set quality for jpeg only (0 - 100) (worst - best), default = 75
//$thumb->show(); // show your thumbnail
$thumb->save("./thumb/$name"); // save your thumbnail to file
}
include("show_thumb.php");
?>

 

func.inc.php

<?php
function directory($dir, $type) {
    $handle = @opendir($dir);
    if(!$handle) {
       return false;
    }

    $res = array();
    while ($file = readdir($handle)) {
       // se om $file er en mappe
       if(!is_dir($file))
       {
          // kun vise bilder
          if (in_array(substr($file, strrpos($file, '.')), $type)) {
            $res[$dir.$file] = $file;
          }
       }
    } // while
    closedir($handle);
    return $res;
}
?>

resizer.class.php

<?php
/*########
Sample :
$thumb=new thumbnail("./img.jpg"); // generate image_file, set filename to resize
$thumb->size_width(100); // set width for thumbnail, or
$thumb->size_height(300); // set height for thumbnail, or
$thumb->size_auto(200); // set the biggest width or height for thumbnail
$thumb->jpeg_quality(75); // [OPTIONAL] set quality for jpeg only (0 - 100) (worst - best), default = 75
$thumb->show();	// show your thumbnail
$thumb->save("./thumb.jpg"); // save your thumbnail to file
/*----------------------------------------------
Note :
- GD must Enabled
- Autodetect file extension (.jpg/jpeg, .png, .gif, .wbmp)
 but some server can't generate .gif / .wbmp file types
- If your GD not support 'ImageCreateTrueColor' function,
 change one line from 'ImageCreateTrueColor' to 'ImageCreate'
 (the position in 'show' and 'save' function)
*/############################################

class thumbnail{
var $img;
function thumbnail($imgfile){
 //detect image format
 $this->img["format"]=ereg_replace(".*\.(.*)$","\\1",$imgfile);
 $this->img["format"]=strtoupper($this->img["format"]);
 if ($this->img["format"]=="JPG" || $this->img["format"]=="JPEG") {
 	//JPEG
 	$this->img["format"]="JPEG";
 	$this->img["src"] = ImageCreateFromJPEG ($imgfile);
 } elseif ($this->img["format"]=="PNG") {
 	//PNG
 	$this->img["format"]="PNG";
 	$this->img["src"] = ImageCreateFromPNG ($imgfile);
 } elseif ($this->img["format"]=="GIF") {
 	//GIF
 	$this->img["format"]="GIF";
 	$this->img["src"] = ImageCreateFromGIF ($imgfile);
 } elseif ($this->img["format"]=="WBMP") {
 	//WBMP
 	$this->img["format"]="WBMP";
 	$this->img["src"] = ImageCreateFromWBMP ($imgfile);
 } else {
 	//DEFAULT
 	echo "Not Supported File";
 	exit();
 }
 @$this->img["lebar"] = imagesx($this->img["src"]);
 @$this->img["tinggi"] = imagesy($this->img["src"]);
 //default quality jpeg
 $this->img["quality"]=75;
}

function size_height($size=100){
 //height
   	$this->img["tinggi_thumb"]=$size;
   	@$this->img["lebar_thumb"] = ($this->img["tinggi_thumb"]/$this->img["tinggi"])*$this->img["lebar"];
}

function size_width($size=100){
 //width
 $this->img["lebar_thumb"]=$size;
   	@$this->img["tinggi_thumb"] = ($this->img["lebar_thumb"]/$this->img["lebar"])*$this->img["tinggi"];
}

function size_auto($size=100){
 //size
 if ($this->img["lebar"]>=$this->img["tinggi"]) {
     $this->img["lebar_thumb"]=$size;
     @$this->img["tinggi_thumb"] = ($this->img["lebar_thumb"]/$this->img["lebar"])*$this->img["tinggi"];
 } else {
     $this->img["tinggi_thumb"]=$size;
     @$this->img["lebar_thumb"] = ($this->img["tinggi_thumb"]/$this->img["tinggi"])*$this->img["lebar"];
 	}
}

function jpeg_quality($quality=75){
 //jpeg quality
 $this->img["quality"]=$quality;
}

function show(){
 //show thumb
 @Header("Content-Type: image/".$this->img["format"]);

 /* change ImageCreateTrueColor to ImageCreate if your GD not supported ImageCreateTrueColor function*/
 $this->img["des"] = ImageCreate($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
     @imagecopyresized ($this->img["des"], $this->img["src"], 0, 0, 0, 0, $this->img["lebar_thumb"], $this->img["tinggi_thumb"], $this->img["lebar"], $this->img["tinggi"]);

 if ($this->img["format"]=="JPG" || $this->img["format"]=="JPEG") {
 	//JPEG
 	imageJPEG($this->img["des"],"",$this->img["quality"]);
 } elseif ($this->img["format"]=="PNG") {
 	//PNG
 	imagePNG($this->img["des"]);
 } elseif ($this->img["format"]=="GIF") {
 	//GIF
 	imageGIF($this->img["des"]);
 } elseif ($this->img["format"]=="WBMP") {
 	//WBMP
 	imageWBMP($this->img["des"]);
 }
}

function save($save=""){
 //save thumb
 if (empty($save)) $save=strtolower("./thumb.".$this->img["format"]);
 /* change ImageCreateTrueColor to ImageCreate if your GD not supported ImageCreateTrueColor function*/
 $this->img["des"] = ImageCreate($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
     @imagecopyresized ($this->img["des"], $this->img["src"], 0, 0, 0, 0, $this->img["lebar_thumb"], $this->img["tinggi_thumb"], $this->img["lebar"], $this->img["tinggi"]);

 if ($this->img["format"]=="JPG" || $this->img["format"]=="JPEG") {
 	//JPEG
 	imageJPEG($this->img["des"],"$save",$this->img["quality"]);
 } elseif ($this->img["format"]=="PNG") {
 	//PNG
 	imagePNG($this->img["des"],"$save");
 } elseif ($this->img["format"]=="GIF") {
 	//GIF
 	imageGIF($this->img["des"],"$save");
 } elseif ($this->img["format"]=="WBMP") {
 	//WBMP
 	imageWBMP($this->img["des"],"$save");
 }
}
}
?>

show_thumb.php

<?php
require_once("func.inc.php"); //require function

echo("<table style=\"border: 1px black solid;\"><tr>");
$thumb = "./thumb";

$img = directory('./', array('.gif', '.png', '.jpg'));
//$thumbnail = directory('./thumb', array('.gif', '.png', '.jpg'));

$imgperline = ("5"); /*her setter du antall bilder påinja*/
$tdwidth = (100 / $imgperline); /*hvor mange prosent av hele linja tdwidth skal utgjøre må ikke endres)*/

$temp = 1;
foreach($img as $link => $name) {
          $file_name = substr($name, strrpos($name, '/'));
          $file_ext  = substr($file_name, 0, strpos($file_name, '.'));
          $file_name = substr($file_name, 0, strrpos($file_name, '.'));

   echo("\n<td style=\"width: $tdwidth%; border: 1px black solid;\"><a href=\"$link\"><img src=\"$thumb/$name\" border=\"0\"></a><br />\n<a href='$link'>$file_name</a>"."</td>\n");

    if($temp%$imgperline==0) echo("\n</tr><tr>");
    $temp++;
}
echo("</tr></table>");
?>

 

dette er noe jeg skrev for en evighet siden og har vel egentlig lagt det ut her før en gang i tiden, men se om du får noe ut av det, bruk de filnavnene jeg har skrevet oppover her og legg alle filene i mappa hvor du har bilder... hvis noe krasjer eller det skjer noe annet gæærnt spør i denne posten, orker ikke teste det nå, men jeg tror alt skal fungere, jeg husker ikke farta om det lager " /thumb/ " mappe automatisk eller om du må gjøre det selv...

Endret av magikern
Lenke til kommentar
  • 6 måneder senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...