Avatar billede marzman Nybegynder
23. juli 2005 - 17:56 Der er 11 kommentarer og
1 løsning

thumb filer generator

Hejsa...

Jeg sidder med en fil som kan lave thumb filer ud fra store billeder.

Problemet er nu at den ikke kan fungere med filer som hedder *.JPG i stedet for *.jpg

hvis jeg indsætter denne linje i filen så virker den heller ikke:
} else if ($ext == 'JPG' || $ext == 'jpeg') {
    $img = @imagecreatefromjpeg($image_path);

source:

<?php
# Constants
define(IMAGE_BASE, '/home/virtual/marzman.dk/public_html/galleri/billeder/');
define(MAX_WIDTH, 150);
define(MAX_HEIGHT, 150);


#Get file
$file = $_GET['file'];

# Get image location
$image_file = str_replace('..', '', $file);
$image_path = IMAGE_BASE . "/$file";

# Load image
$img = null;
$ext = strtolower(end(explode('.', $image_path)));
if ($ext == 'jpg' || $ext == 'jpeg') {
    $img = @imagecreatefromjpeg($image_path);
} else if ($ext == 'JPG' || $ext == 'jpeg') {
    $img = @imagecreatefromjpeg($image_path);
} else if ($ext == 'png') {
    $img = @imagecreatefrompng($image_path);
# Only if your version of GD includes GIF support
} else if ($ext == 'gif') {
    $img = @imagecreatefrompng($image_path);
}

# If an image was successfully loaded, test the image for size
if ($img) {

    # Get image size and scale ratio
    $width = imagesx($img);
    $height = imagesy($img);
    $scale = min(MAX_WIDTH/$width, MAX_HEIGHT/$height);

    # If the image is larger than the max shrink it
    if ($scale < 1) {
        $new_width = floor($scale*$width);
        $new_height = floor($scale*$height);

        # Create a new temporary image
        $tmp_img = imagecreatetruecolor($new_width, $new_height);

        # Copy and resize old image into new image
        imagecopyresized($tmp_img, $img, 0, 0, 0, 0,
                        $new_width, $new_height, $width, $height);
        imagedestroy($img);
        $img = $tmp_img;
    }
}

# Create error image if necessary
if (!$img) {
    $img = imagecreate(MAX_WIDTH, MAX_HEIGHT);
    imagecolorallocate($img,0,0,0);
    $c = imagecolorallocate($img,70,70,70);
    imageline($img,0,0,MAX_WIDTH,MAX_HEIGHT,$c2);
    imageline($img,MAX_WIDTH,0,0,MAX_HEIGHT,$c2);
}

# Display the image
header("Content-type: image/jpeg");
imagejpeg($img);
?>

hvordan løser jeg dette problem. ?
Avatar billede Slettet bruger
23. juli 2005 - 17:58 #1
Han tager allerede højde for det her:

$ext = strtolower(end(explode('.', $image_path)));

Så hvilken fejl får du når du prøver at uploade et billede med .JPG?

--
pacroon
Avatar billede henninghabor Nybegynder
23. juli 2005 - 18:00 #2
Du bruger denne funktion: strtolower og derfor bør du ændre .JPG til .jpg.
Avatar billede henninghabor Nybegynder
23. juli 2005 - 18:00 #3
Hmmm, pacroon. Du ka' da ikke tillade dig at svarer før mig. ;)
Avatar billede henninghabor Nybegynder
23. juli 2005 - 18:02 #4
pacroon svarede vist ikke det samme som mig.

Om det så er ham eller mig, der har ret, skal jeg la' være usagt.
Avatar billede Slettet bruger
23. juli 2005 - 18:07 #5
Hehe, jeg mente bare, at han allerede skriver ".jpg" - så ".JPG" if-sætningen er overflødig, da han, som vi begge siger, bruger strtolower. :)

Så der må være noget andet galt...
Avatar billede marzman Nybegynder
23. juli 2005 - 18:08 #6
danm!

Min fejl.
jeg havde lavet en fejl i mit $_GET til min thumb fil. derfor skriv den en ting til filen 2 gang. havde jeg åbenbart ikke lagt mærke til.

Points ? any ?
Avatar billede Slettet bruger
23. juli 2005 - 18:09 #7
Fjern @'erne fra @imagecreatefromjpeg($image_path); da disse undertrykker fejlmeddelelser.
Avatar billede Slettet bruger
23. juli 2005 - 18:11 #8
Gerne :)
Avatar billede marzman Nybegynder
23. juli 2005 - 18:16 #9
tja det må være dig som kan have dem, med mindre en lige vil have et tillægs spørgsmål

med hensyn til min glab():

-- foreach (glob("$cat/*.JPG") as $filename) { --

hvordan får jeg den til at være både {*.JPG og *.jpg) evt. brug af strtolower()
Avatar billede Slettet bruger
23. juli 2005 - 18:27 #10
Det er jeg ikke sikker på du kan gøre sådan...

Så skal du nok gøre det over to omgange eller vælge *.* og sortere jpg/JPG fra.

--
pacroon
Avatar billede marzman Nybegynder
23. juli 2005 - 18:31 #11
all right jeg prøver lidt med det...
Avatar billede hmortensen Nybegynder
23. juli 2005 - 19:31 #12
Du kan bruge BLOG_BRACE parameteren:
glob($cat."/{*.jpg,*.JPG}", GLOB_BRACE);
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