Avatar billede challenge Praktikant
03. februar 2006 - 23:41 Der er 23 kommentarer og
1 løsning

GDlib browser problemer

Hey. Jeg har dette script der resizer et jpg billede vha. GDlib:

<?
mysql_connect("xxx", "xxx", "xxx") OR DIE("Kunne ikke etabler en forbindelse til databasen!");
mysql_select_db("xxx") OR DIE("Kunne ikke etabler en forbindelse til MySQL'en!");
$billeder = mysql_query("SELECT * FROM galleri WHERE id = '".$_GET[id]."'") or die(mysql_error());
$findes_bil = mysql_fetch_array($billeder);

// The file
$filename = "http://www.helgason.dk/brugersys/upload/".$findes_bil[url];

// Set a maximum height and width
$width = 75;
$height = 75;

// Content type
header('Content-type: image/jpeg');

// Get new dimensions
list($width_orig, $height_orig) = getimagesize($filename);

if ($width && ($width_orig < $height_orig)) {
  $width = ($height / $height_orig) * $width_orig;
} else {
  $height = ($width / $width_orig) * $height_orig;
}

// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output
imagejpeg($image_p, null, 100);
?>

Dette virker indtil videre fint - men kun i IE. I firefox får jeg tit de dér "billedet kan ikke vises" ikoner (I IE kendt som "rødt kryds").
Hvorfor virker det i IE og ikke i firefox? Har det noget med en form for hukommelse at gøre?

Mvh.

Challenge.
Avatar billede challenge Praktikant
03. februar 2006 - 23:42 #1
Okay - Har nu også problemer i IE...

Hvad er problemet med scriptet?
Avatar billede jakobdo Ekspert
04. februar 2006 - 08:44 #2
Hvordan kalder du denne kode?

Og du bør nederst i din kode lave: imagedestroy($image); og imagedestroy($image_p);
God kode stil at rydde op efter sig selv.
Avatar billede challenge Praktikant
04. februar 2006 - 10:12 #3
Henter den således: <img src=gdlib.php?id=".$bil[id]." border=0>
(ligger inde i en while)

imagedestroy($image); og imagedestroy($image_p); gjorde ingen forskel, men det var nok heller ikke meningen...?!
Avatar billede jakobdo Ekspert
04. februar 2006 - 10:57 #4
Og du er sikker på at stien er korrekt til billedet?
Avatar billede challenge Praktikant
04. februar 2006 - 11:05 #5
ja... Det er jo ikke alle billeder hele tiden, men et par stykker - De plejer dog at komme tilbage efter en refresh. Men går man fra siden og kommer på den igen er det igen et par stykker der ikke virker...
Avatar billede jakobdo Ekspert
04. februar 2006 - 11:05 #6
Hvad hvis du klikker på billedet og vælger VIS BILLEDE (som du ihf kan i Firefox)
Avatar billede challenge Praktikant
04. februar 2006 - 11:07 #7
Hmm - Så lige noget.
Jeg har lagt mærke til at alle mine billeder står i upper-case (også efternavnet som JPG og ikke som jpg - Som der står i scriptet (// Content type header('Content-type: image/jpeg');))

Kan det være det?
Avatar billede jakobdo Ekspert
04. februar 2006 - 11:13 #8
Nej, det burde ikke gøre en forskel.
header image/jpeg fortæller bare der kommet et jpeg/jpg billede.
Om selve billedet har stort eller lille extension er ligemeget.
Hvor mange billeder viser du pr side?
Avatar billede challenge Praktikant
04. februar 2006 - 11:16 #9
Jeg har sat en LIMIT på 10 i min mysql_query
Avatar billede jakobdo Ekspert
04. februar 2006 - 11:17 #10
Ok!
Nu spørger jeg måske dumt (måske det skyldes jeg ikke lige har et svar på dit spørgsmål direkte)
Men hvorfor resizer du ikke pics en gang for alle, og så ikke gøre det on-the-fly?
Avatar billede Slettet bruger
04. februar 2006 - 11:20 #11
Dine billeder står altså i databasen som værende upper-case ?
Hvis du sidder på en linux maskine, skal du være opmærksom på at systemet er case-sensitive, så sikre dig at billederne på serveren også er upper-case.
Avatar billede challenge Praktikant
04. februar 2006 - 11:21 #12
Hvis du snakker om at gøre det i f.eks. Photoshop, så er det fordi jeg har et upload-script hvor brugerne selv kan uploade billederne...
Avatar billede challenge Praktikant
04. februar 2006 - 11:23 #13
cyperman,
Billednavnene og dataerne i databasen er ens...
Avatar billede challenge Praktikant
04. februar 2006 - 11:26 #14
Hvis billedet ikke kan vises, og jeg højreklikker og viser billedet får jeg følgende besked:

"Billedet “gdlib.php?id=18” kan ikke vises, da det indeholder fejl."
Avatar billede Slettet bruger
04. februar 2006 - 11:31 #15
Det jakobdo mener er, hvorfor du resizer billederne hver gang de skal vises :-)
Man kunne når en bruger uploader billedet, resize det og gemme det resizet billede, og derved spare en masse kræfter på serveren når billederne fremover skal vises.

Hvis du nu åbner filen gdlib.php?id=1 eller sådan noget direkte i din browser.
Får du så ingen fejl eller blot en blank side?
Avatar billede challenge Praktikant
04. februar 2006 - 11:43 #16
Det var en god idé :)
Det tror jeg ikke lige mine evner rækker til, men jeg vil da lige undersøge mulighederne :)

Jeg får fejlen som jeg skrev ovenover :)
Avatar billede challenge Praktikant
04. februar 2006 - 12:13 #17
hmm...


Fandt denne:

$pic = $til;                // Originalt billede
$thumb = $til . "_thumb";            // Ønsket miniature billede
Thumb($pic, $thumb);                    // Kald funktion

function Thumb($sourcefile, $targetfile) {
    $size = 70;                            // Max størrelse (pixler)
    $source_id = imageCreateFromJPEG($sourcefile);
    $source_x = imagesx($source_id);
    $source_y = imagesy($source_id);
    $delta = $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);
}

Kan ikke rigtig få den til at virke...
Kan den bruges?

Får flg. fejl:
"Fatal error: Call to undefined function: thumb() in /www/helgason.dk/brugersys/beskyttet.php on line 1352"
Avatar billede jakobdo Ekspert
04. februar 2006 - 14:01 #18
Sikker på du har husket at SKRIVE Thumb()?
Din fejl skriver jo thumb() med lille t, og se funktionen er med STORT T
Avatar billede challenge Praktikant
04. februar 2006 - 14:45 #19
Jepper - Det var sku det!

Du skal vel, igen, have point ;)
Avatar billede jakobdo Ekspert
04. februar 2006 - 14:57 #20
Du kan ihf få et svar!
Og selv bestemme om cybermann også skal have point.
Avatar billede challenge Praktikant
04. februar 2006 - 15:08 #21
Joda - Cyperman skal da også have! ;)
Avatar billede Slettet bruger
05. februar 2006 - 16:00 #22
Jeg vil gerne lade jakobdo få alle points, da jeg jo egentlig blot har uddybet hvad han mente :-)

over and out.
Avatar billede challenge Praktikant
05. februar 2006 - 16:56 #23
Ok. Det er jo dit eget valg ;)

Men tak for hjælpen alligevel!
Avatar billede jakobdo Ekspert
05. februar 2006 - 17:15 #24
Jeg takker ihf for point!
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