Avatar billede stonejunkie Nybegynder
05. maj 2004 - 20:08 Der er 4 kommentarer og
2 løsninger

Hjælp til upload script.

Hej jeg er forholdsvis ny inden for PHP, så jeres svar må gerne være så en nybegynder kan forstå det.

Jeg har prøvet at samle det her script som egentlig virker fint så længe det er JPG billeder der bliver uploadet. Problemet er at det ikke vil uploade PNG billeder. Medmindre at jeg sletter hele JPG delen i funktionen, for hvis jeg gør det funger det fint med PNG.

Jeg kan simpelthen ikke finde ud af hvad jeg gør galt.

function thumb($sourcefile,$targetfile,$max_size,$file_type){
if ($file_type == "image/pjpeg" OR "image/jpeg" OR "image/jpg"){
    $source_id = imagecreatefromjpeg($sourcefile);
    $source_x = imagesx($source_id);
    $source_y = imagesy($source_id);
    $delta = $max_size/max($source_x, $source_y);
    $dest_x = round($source_x*$delta);
    $dest_y = round($source_y*$delta);
    $target_id=imagecreatetruecolor($dest_x, $dest_y);
    imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y);
    imagejpeg($target_id,$targetfile,100);
    }
if ($file_type == "image/png" OR "image/x-png"){
    $source_id = imagecreatefrompng($sourcefile);
    $source_x = imagesx($source_id);
    $source_y = imagesy($source_id);
    $delta = $max_size/max($source_x, $source_y);
    $dest_x = round($source_x*$delta);
    $dest_y = round($source_y*$delta);
    $target_id=imagecreatetruecolor($dest_x, $dest_y);
    imagecopyresampled($target_id,$source_id,0,0,0,0,  $dest_x,$dest_y, $source_x,$source_y);
    imagepng($target_id,$targetfile,100);
    }
}
Avatar billede human Nybegynder
05. maj 2004 - 20:12 #1
Muligt det bare er mig, men hvorfor bruger du 2 if? Sæt istedet OR "image/png" OR "image/x-png", op ved siden af hvor der står OR jpeg osv.
Avatar billede detox Nybegynder
05. maj 2004 - 20:17 #2
Prøv at rette dine if-sætninger:

function thumb($sourcefile,$targetfile,$max_size,$file_type){
($file_type == "image/pjpeg" OR $file_type == "image/jpeg" OR $file_type == "image/jpg") {
    $source_id = imagecreatefromjpeg($sourcefile);
    $source_x = imagesx($source_id);
    $source_y = imagesy($source_id);
    $delta = $max_size/max($source_x, $source_y);
    $dest_x = round($source_x*$delta);
    $dest_y = round($source_y*$delta);
    $target_id=imagecreatetruecolor($dest_x, $dest_y);
    imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y);
    imagejpeg($target_id,$targetfile,100);
    }
elseif ($file_type == "image/png" OR $file_type == "image/x-png"){
    $source_id = imagecreatefrompng($sourcefile);
    $source_x = imagesx($source_id);
    $source_y = imagesy($source_id);
    $delta = $max_size/max($source_x, $source_y);
    $dest_x = round($source_x*$delta);
    $dest_y = round($source_y*$delta);
    $target_id=imagecreatetruecolor($dest_x, $dest_y);
    imagecopyresampled($target_id,$source_id,0,0,0,0,  $dest_x,$dest_y, $source_x,$source_y);
    imagepng($target_id,$targetfile,100);
    }
}
Avatar billede detox Nybegynder
05. maj 2004 - 20:18 #3
PS: Denne if-sætning vil altid være sand:

if ($file_type == "image/pjpeg" OR "image/jpeg" OR "image/jpg"){
Avatar billede stonejunkie Nybegynder
05. maj 2004 - 20:22 #4
Super cool nu virker det. Tak, men hvor vil den ovenstående sætning altid være sand?
Avatar billede detox Nybegynder
05. maj 2004 - 20:25 #5
I denne:

if ($file_type == "image/pjpeg" OR "image/jpeg" OR "image/jpg"){

i modsætning til:

($file_type == "image/pjpeg" OR $file_type == "image/jpeg" OR $file_type == "image/jpg") {

spørger du jo ikke om: $file_type er lig med: "image/jpeg", men udelukkende om: "image/jpeg" er et sandt udtryk.
Avatar billede stonejunkie Nybegynder
05. maj 2004 - 20:29 #6
Tak for hjælpen detox:)
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