[PHP]Automatisch thumbnails maken van geuploade jpegs

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 07:09
Ik moet voor iemand een internetpagina maken waar een hele hoop foto's op moeten komen te staan. Degene waar ik het voor maak, heeft niet veel verstand van pc's en internet, maar een FTP-programma krijg ik em nog wel geleerd :) . Ik wil voor hem dus het volgende maken.
Deze persoon upload een folder met de jpegs naar de site met een ftp-programma. Hierna moet de php-server automatisch van alle geuploade jpegs een verkleinde versie maken, en wegschrijven, zodat ik deze in de fotogallery kan gebruiken.

Ik heb al wel een php-script gemaakt dat files die via een formulier worden geupload automatisch verkleint, maar dat is in dit geval niet zo handig natuurrlijk. Is het mogelijk om de phpserver automatisch de geuploade jpegs te laten verkleinen? Ik had ook al gedacht om hem elke keer nadat ie een folder heeft geupload, een php-scriptje te runnen, waarin ie de dirnaam moet ingeven, waarna het phpscriptje door de bestanden loopt, en ze allemaal verkleint. Maar kan dit ook allemaal automatisch? Ik bedoel, kan ik een script maken, dat merkt dat er een nieuwe map wordt aangemaakt in de map '/fotos/' op de server (ik noem maar wat)?

Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
PHP kan niet zelfstandig iets doen. Je zal iets moeten hebben wat php triggert.

Een optie is om hem de foto's te laten uppen, en vervolgens op een knop 'update' te laten drukken.
Een andere optie is om met een cronjob oid elk uur (?) te laten checken of er wat is veranderd en dan updaten.

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

  • killermar
  • Registratie: Augustus 2002
  • Laatst online: 17-07 09:45
Op sourceforge.net zijn prachtige complete php-sites te downloaden die precies doen wat je wilt.

Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
function filelist ($currentdir, $startdir = null)
{
    chdir ($currentdir);
    // remember where we started from
    if (!$startdir) {
        $startdir = $currentdir;
    }
    $d = opendir (".");
    // list the files in the dir
    while ($file = readdir ($d)) {
        if ($file != ".." && $file != "." && $file != "index.php") {
            if (is_dir ($file)) {
                $dirname = $file;

                // het is een directory, dus pak de files
                $files = filelist (getcwd() . '/' . $file, getcwd(), $files);
            } else {
                // datum uitlezen
                $datum = filemtime("$currentdir/$file"); // datum pakken
                $datum = date("d-m-Y H:i", $datum);
                // bestandsgrootte uitlezen
                $filesize = filesize("$currentdir/$file"); // bestandsgrootte lezen
                $filesize = ("$filesize") / 1024000; // bestandsgrootte lezen
                $filesize = round($filesize, 2); //afronden op 2 decimalen
                $file = addslashes($file); // filename slashen

       // en even een thumbje maken
        $photo = imagecreatefromjpeg ("/echte/pad/naar/je/dir/$file");
        $photo_dimensions_width = imagesx ($photo);
        $photo_dimensions_height = imagesy ($photo);
        $thumb_dimensions_width = 100;
        $thumb_dimensions_height = 75;
        
        //oude gd 1.0
        $create_thumb = imagecreate ($thumb_dimensions_width, $thumb_dimensions_height);
        imagecopyresized ($create_thumb, $photo, 0, 0, 0, 0,
        $thumb_dimensions_width, $thumb_dimensions_height,
        $photo_dimensions_width, $photo_dimensions_height);
        
        ImageJpeg($create_thumb,"/echte/pad/naar/je/dir/t_$file",100);
        
            }
        }
    }
    // alles netjes aflsuiten
    closedir ($d);
    chdir ($startdir);
}

filelist ("/echte/pad/naar/je/dir/");


Je kan deze code gebruiken die ik ook op mijn website gebruik. Ik heb het gedeelte wat je kan gebruiken geplaatst, echt er zijn wel veel extra waarden die worden uitgelezen. Hier filelist ("/echte/pad/naar/je/dir/"); plaats je het systeem pad naar je directory. Je kan ook een hoofdmap nemen met subdirs. Alleen hier moet je even testen, en desnoods het pad naar de tumbs laten mee veranderen.

Succes

[ Voor 37% gewijzigd door Verwijderd op 27-03-2003 16:26 ]


Acties:
  • 0 Henk 'm!

  • irondog
  • Registratie: Januari 2001
  • Laatst online: 11-05 10:49

irondog

alle dingen moeten onzin zijn

Tja, je kunt eenmalig het volgende script laten uitvoeren door de user (gd vereist):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$d = dir("/home/hans/pics/");

$entry = $d->read(); // ./
$entry = $d->read(); // ../

while (($entry = $d->read())!=NULL)
{
$src_img = imagecreatefromjpeg("/home/hans/pics/$entry");
$new_w =250;
$new_h=188;
$dst_img=imagecreate($new_w,$new_h);
imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx  ($src_img),imagesy($src_img));
imagejpeg($dst_img,"/home/hans/resizedpics/$entry");
}

Je krijgt zo natuurlijk snel een php maximum execution timeout
Rotjeknor schreef op 27 March 2003 @ 16:11:
Een andere optie is om met een cronjob oid elk uur (?) te laten checken of er wat is veranderd en dan updaten.
Dat zou ik ook doen als het een unix server betreft.

[ Voor 23% gewijzigd door irondog op 27-03-2003 16:20 ]

[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]


Acties:
  • 0 Henk 'm!

  • irondog
  • Registratie: Januari 2001
  • Laatst online: 11-05 10:49

irondog

alle dingen moeten onzin zijn

edit:
double post :)

[ Voor 97% gewijzigd door irondog op 27-03-2003 16:20 ]

[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]

Pagina: 1