Avatar billede Six Nybegynder
04. november 2004 - 13:46 Der er 15 kommentarer og
1 løsning

Resize billede med gdlib

Hej eksperter.

Jeg har fået lavet følgende.
if (type($konfiguration["filtyper"], $filnavn) == "jpg") {
    $percent = 0.5;
    header('Content-type: image/jpeg');
    list($width, $height) = getimagesize($filnavn);
    $new_width = $width * $percent;
    $new_height = $height * $percent;
   
    $image_p = imagecreatetruecolor($new_width, $new_height);
    $image = imagecreatefromjpeg($filnavn);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    imagejpeg($image_p, null, 100);
};

Dette giver mig dog et output: The image “http://localhost/kpunktet/resize.php” cannot be displayed, because it contains errors.

Hvad går der lige galt ?
Avatar billede detox Nybegynder
04. november 2004 - 13:54 #1
Måske skal det være:

imagejpeg($image_p, "", 100);
Avatar billede Six Nybegynder
04. november 2004 - 13:57 #2
nope, no good.

Jeg har taget det direkte fra manualen :D
Avatar billede Six Nybegynder
04. november 2004 - 13:57 #3
jeg kan da prøve at paste hele scriptet.. Kan jo være i kan se andre fejl der måske kan spille ind.

<?php

/*-----------------------
#        Konfiguration        #
-----------------------*/
$konfiguration["filtyper"] = ".jpg$|.gif$|.png$"; //Skal adskilles med | eksempel: $filtyper = ".jpg$|.gif$";
$konfiguration["upload_bibliotek"] = "./pictures_original_size"; // Relativ sti, i forhold til denne fils placering. Eksempel: Upload.php ligger i /upload/ og filerne skal ligges i /upload/updir/ Så angives det ./updir HUSK AT MAPPEN SKAL HAVE CHMOD 777!
$konfiguration["thumb_bibliotek"] = "./thumbs/"; // Relativ sti, i forhold til denne fils placering. Eksempel: Upload.php ligger i /upload/ og filerne skal ligges i /upload/thumbs/ Så angives det ./thumbs HUSK AT MAPPEN SKAL HAVE CHMOD 777!
$konfiguration["max_stoerrelse"] = "512000"; // Filens maxstørrelse i bytes - I konfigurationsfilen til php, er standard værdien 2mb. Dvs man kan max uploade en fil på 2 mb.
$konfiguration["$maxantalfiler"] = "15"; // Maks antal filer der kan uploades på én gang

/*-----------------------
#        Slut på konf        #
-----------------------*/

/*-----------------------
#        Funktioner          #
-----------------------*/


function upload($fra, $til) {
  move_uploaded_file($fra, $til);
};

function type($filtyper, $navn) {
    $ext = substr($navn, -3);
    if(!eregi($filtyper, $navn)) {
        echo "Denne fil er ikke tilladt";
        };
    if ($ext == "jpg") {
        return jpg;
    };
    if ($ext == "gif") {
        return gif;
    };
    if ($ext == "png") {
        return png;
    };
    return true;
};

/*-----------------------
#    Slut på Funktioner  #
-----------------------*/


$filnavn = $_FILES["navn"]["name"][0];
$filnavn_tmp = $_FILES["navn"]["tmp_name"][0];

$fra = $_FILES["navn"]["tmp_name"][0];
$til = $konfiguration["upload_bibliotek"]."/".$_FILES["navn"]["name"][0];

type($konfiguration["filtyper"], $filnavn);

if (type($konfiguration["filtyper"], $filnavn) == "jpg") {
    $percent = 0.5;
    header('Content-type: image/jpeg');
    list($width, $height) = getimagesize($filnavn);
    $new_width = $width * $percent;
    $new_height = $height * $percent;
   
    $image_p = imagecreatetruecolor($new_width, $new_height);
    $image = imagecreatefromjpeg($filnavn);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    imagejpeg($image_p, "", 100);
};

if (type($konfiguration["filtyper"], $filnavn) == "gif") {
    echo "Woohoo dette blev til et gif billede";
};

if (type($konfiguration["filtyper"], $filnavn) == "png") {
    echo "Woohoo dette blev til et gif billede";
};

?>
Avatar billede coderdk Praktikant
04. november 2004 - 14:36 #4
Udkommentér: header('Content-type: image/jpeg');
Så kan du nok se hvad fejlen er :P
Avatar billede Six Nybegynder
04. november 2004 - 14:53 #5
hmm
det virker som om den slet ikke får noget input billede :/
Avatar billede coderdk Praktikant
04. november 2004 - 14:58 #6
Fjern de der [0] der er...

$filnavn = $_FILES["navn"]["name"][0];
$filnavn_tmp = $_FILES["navn"]["tmp_name"][0];

Bør være:

$filnavn = $_FILES["navn"]["name"];
$filnavn_tmp = $_FILES["navn"]["tmp_name"];
Avatar billede Six Nybegynder
04. november 2004 - 15:05 #7
Hvis jeg fjerner mine [0] så er der fejl i scriptet
Avatar billede Six Nybegynder
04. november 2004 - 15:15 #8
Jeg fik det til at fungere med dette:

$fra = $_FILES["navn"]["tmp_name"][0];
$til = $konfiguration["upload_bibliotek"]."/".$_FILES["navn"]["name"][0];
$percent = 0.5;
type($konfiguration["filtyper"], $filnavn);

if (type($konfiguration["filtyper"], $filnavn) == "jpg") {
header('Content-type: image/jpeg');
list($width, $height) = getimagesize($filnavn_tmp);
$new_width = $width * $percent;
$new_height = $height * $percent;
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filnavn_tmp);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// Output
imagejpeg($image_p, null, 100);
};

Hvordan får jeg nu gemt det nye mindre billede på serveren ?
Avatar billede Six Nybegynder
04. november 2004 - 15:24 #9
Hmm - jeg fik gemt mit billede. Er det ikke nødvendigt at angive headeren, hvis man ikke vil have vist billedet i browseren? - Jeg får nemlig en fejl, når jeg ikke udkommentere headeren.

imagejpeg($image_p, $til, 100); <- sådan gemmer jeg :D
Avatar billede detox Nybegynder
04. november 2004 - 16:54 #10
Nej, du har ikke behov for headeren, når du ikke viser billedet.
Avatar billede Six Nybegynder
04. november 2004 - 16:56 #11
ok :)

Kan det passe at man ikke kan bruge samme metode, når man skal resize gif, og gemme det på serveren ?
Avatar billede coderdk Praktikant
04. november 2004 - 21:14 #12
Det kan du godt, men så skal du være sikker på at din php/gd kan skrive GIF - Og så skal du bruge imagecreate i stedet for imagecreatetruecolor...
Avatar billede coderdk Praktikant
04. november 2004 - 21:15 #13
Så vidt jeg kan se, så indeholder $_FILES["navn"]["tmp_name"][0] det første tegn i brugerens filnavn :P
Avatar billede Six Nybegynder
04. november 2004 - 22:03 #14
nope, $_FILES["navn"]["tmp_name"][0]  indeholder filens tmp navn på serveren :D
Avatar billede Six Nybegynder
04. november 2004 - 22:03 #15
pt ser mit script således ud:

$filnavn = $_FILES["navn"]["name"][0];
$filnavn_tmp = $_FILES["navn"]["tmp_name"][0];

$fra = $_FILES["navn"]["tmp_name"][0];
$til = $konfiguration["thumb_bibliotek"]."/".$_FILES["navn"]["name"][0];
$orgtil = $konfiguration["upload_bibliotek"]."/".$_FILES["navn"]["name"][0];
$percent = 0.1;

if (type($konfiguration["filtyper"], $filnavn) == "true") {
    list($width, $height) = getimagesize($filnavn_tmp);
    $new_width = $width * $percent;
    $new_height = $height * $percent;
    $image_p = imagecreatetruecolor($new_width, $new_height);
    $image = imagecreatefromjpeg($filnavn_tmp);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

    // Output
    $til = str_replace(substr($til, -4), "_thumb" . substr($til, -4), $til);
    imagejpeg($image_p, $til, 100);
    imagejpeg($image, $orgtil, 100);
    echo $filnavn . " er gemt!";
};
Avatar billede Six Nybegynder
09. november 2004 - 17:46 #16
- lukker -
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester