script maken?
12 antwoorden
Gesponsorde links
DRUNK - 03/11/2004 18:51
PHP gevorderde
ja is goed, ik zal kijken wat ik voor je kan doen. Heb ergesn zo een code staan, ik zoek het even op dan post ik dat nog wel.
ThePhantom - 03/11/2004 18:57
Lid
okay , het moet 1x uitgevoerd worden
daarna komt er een script dat dit meteen bij uploaden gebeurt.
Thomas - 03/11/2004 19:05
Moderator
Je zou natuurlijk ook als iemand de plaatjes van een gebruiker opvraagt kunnen kijken of de bijbehorende thumbs bestaan, en deze anders meteen aanmaken. Dat is ook 'eenmalig'.
ThePhantom - 03/11/2004 19:21
Lid
ja zou ook kunnen maar ik probeer de site zo snel mogelijk te laden en je weet dan nooit wanneer alle foto's geweest zijn
DRUNK - 03/11/2004 20:46 (laatste wijziging 03/11/2004 22:46)
PHP gevorderde
Hoi, heb wat code voor je weet allen niet zeker of het foutloos is. Kan nu even niet testen, servers worden geupgrade dus kijk maar of het werkt.
<?php error_reporting(E_ALL);
$img_format = '640x480'; // formaat van afbeelding
$th_fac = 5; // hoeveel keer kleiner moet de thumbnail worden?
$dir = './dir/met/gebruikers/'; // hierin zet je de dir. waarin alle mappen van de gebruikers staan
// Kijen of $dir een directory is
if (!is_dir($dir)) {
die($dir . ' is geen directory!');
}
// $dir openen, lukt dit niet
// stop uitvoeging en geef melding
if (!$dh = opendir($dir)) {
die('Kan ' . $dir . ' niet openen!');
}
// $dir uitlezen, elke file en dir in var $udir zetten
while (($udir = readdir($dh)) !== false) {
// ALS de var $udir GEEN . | .. is...
if ($udir !== '.' || $udir !== '..') {
// Kijk of $udir een directory is,
// is dit niet het geval: doorgaan, volgende...
if (!is_dir($dir . $udir)) continue;
// ALS $udir, NIET geopend kan worden...
if (!$udh = opendir($dir . $udir)) {
die('Kan ' . $dir . $udir . ' niet openen!');
}
// $udir is een dir, loop deze door en zet
// alle resultaten in var $file
while ($file = readdir($dir . $udir) !== false) {
// ALS de var $file GEEN . | .. is...
if ($file !== '.' || $file !== '..') {
// Eenvoudige controle, kijk dmv getimagesize()
// of $file een afbeelding is, zonder '@' teken
// hiervoor zal het een foutmelding geven als
// $file GEEN afbeelding is, dit wil je niet dus
// onderdrukken. Hierna begint het verkleinen
// van de afbeeldingen.
if (@getimagesize($dir . $udir . '/' . $file)) {
// informatie over $file in $size zetten
$size = getimagesize($dir . $udir . '/' . $file);
// $max_xy, array 0 => width, 1 => height
$max_xy = explode('x', $img_format);
if ($size[0] > $size[1]) {
$new_x = $max_xy[0];
$__fac = ($size[0] / $max_xy[0]);
$new_y = ($size[1] / $__fac);
$_th_x = ($max_xy[0] / $th_fac);
$_th_y = (($size[1] / $__fac) / $th_fac);
}
else if ($size[1] > $size[0]) {
$new_y = $max_xy[1];
$__fac = ($size[1] / $max_xy[1]);
$new_x = ($size[0] / $__fac);
$_th_x = (($size[0] / $__fac) / $th_fac);
$_th_y = ($max_xy[1] / $th_fac);
}
else {
$new_y = $max_xy[1];
$new_x = $max_xy[0];
$_th_x = $max_xy[0] / $th_fac;
$_th_y = $max_xy[1] / $th_fac;
}
// Kijen wat voor plaatje het is (gif, jpg, png ...)
switch($size[2]) {
case 1 :
// gif GD2 ondersteund het niet!
continue;
case 2 :
$image[] = imagecreatefromjpeg($src_img);
$image[] = imagecreatetruecolor($img_info[0], $img_info[1]);
$image[] = imagecreatetruecolor($img_info[2], $img_info[3]);
imagecopyresampled($image[1], $image[0], 0, 0, 0, 0, $img_info[0], $img_info[1], $img_info[4][0], $img_info[4][1]);
imagecopyresampled($image[2], $image[0], 0, 0, 0, 0, $img_info[2], $img_info[3], $img_info[4][0], $img_info[4][1]);
$new_img[] = imagejpeg($image[1], $dir . $udir . '/' . $file, 80);
$new_img[] = imagejpeg($image[2], $dir . $udir . '/thumb_' . $file, 80);
if ($new_img[0] && $new_img[1]) {
imagedestroy($image[0]);
imagedestroy($image[1]);
imagedestroy($image[2]);
}
else { echo 'afbeelding ' . $dir . $udir . '/' . $file . 'mislukt!<br />'; }
break;
case 3 :
// png, als je dit wil maak het zelf dan maar
continue;
}
}
// $file is GEEN afbeelding, doorgaan...
else { continue; }
}
// $file is . | .. doorgaan, volgende...
else { continue; }
}
closedir($udh);
}
// $udir is . | .. doorgaan, volgende...
else { continue; }
}
closedir($dh);
?>
$img_format = '640x480' ; // formaat van afbeelding
$th_fac = 5 ; // hoeveel keer kleiner moet de thumbnail worden?
$dir = './dir/met/gebruikers/' ; // hierin zet je de dir. waarin alle mappen van de gebruikers staan
// Kijen of $dir een directory is
die ( $dir . ' is geen directory!' ) ; }
// $dir openen, lukt dit niet
// stop uitvoeging en geef melding
die ( 'Kan ' . $dir . ' niet openen!' ) ; }
// $dir uitlezen, elke file en dir in var $udir zetten
while ( ( $udir = readdir ( $dh ) ) !== false ) {
// ALS de var $udir GEEN . | .. is...
if ( $udir !== '.' || $udir !== '..' ) {
// Kijk of $udir een directory is,
// is dit niet het geval: doorgaan, volgende...
if ( ! is_dir ( $dir . $udir ) ) continue ;
// ALS $udir, NIET geopend kan worden...
if ( ! $udh = opendir ( $dir . $udir ) ) { die ( 'Kan ' . $dir . $udir . ' niet openen!' ) ; }
// $udir is een dir, loop deze door en zet
// alle resultaten in var $file
while ( $file = readdir ( $dir . $udir ) !== false ) {
// ALS de var $file GEEN . | .. is...
if ( $file !== '.' || $file !== '..' ) {
// Eenvoudige controle, kijk dmv getimagesize()
// of $file een afbeelding is, zonder '@' teken
// hiervoor zal het een foutmelding geven als
// $file GEEN afbeelding is, dit wil je niet dus
// onderdrukken. Hierna begint het verkleinen
// van de afbeeldingen.
// informatie over $file in $size zetten
// $max_xy, array 0 => width, 1 => height
$max_xy = explode ( 'x' , $img_format ) ;
if ( $size [ 0 ] > $size [ 1 ] ) {
$new_x = $max_xy [ 0 ] ;
$__fac = ( $size [ 0 ] / $max_xy [ 0 ] ) ;
$new_y = ( $size [ 1 ] / $__fac ) ;
$_th_x = ( $max_xy [ 0 ] / $th_fac ) ;
$_th_y = ( ( $size [ 1 ] / $__fac ) / $th_fac ) ;
}
else if ( $size [ 1 ] > $size [ 0 ] ) {
$new_y = $max_xy [ 1 ] ;
$__fac = ( $size [ 1 ] / $max_xy [ 1 ] ) ;
$new_x = ( $size [ 0 ] / $__fac ) ;
$_th_x = ( ( $size [ 0 ] / $__fac ) / $th_fac ) ;
$_th_y = ( $max_xy [ 1 ] / $th_fac ) ;
}
else {
$new_y = $max_xy [ 1 ] ;
$new_x = $max_xy [ 0 ] ;
$_th_x = $max_xy [ 0 ] / $th_fac ;
$_th_y = $max_xy [ 1 ] / $th_fac ;
}
// Kijen wat voor plaatje het is (gif, jpg, png ...)
switch ( $size [ 2 ] ) {
case 1 :
// gif GD2 ondersteund het niet!
continue ;
case 2 :
$image [ ] = imagecreatefromjpeg( $src_img ) ;
$image [ ] = imagecreatetruecolor( $img_info [ 0 ] , $img_info [ 1 ] ) ;
$image [ ] = imagecreatetruecolor( $img_info [ 2 ] , $img_info [ 3 ] ) ;
imagecopyresampled( $image [ 1 ] , $image [ 0 ] , 0 , 0 , 0 , 0 , $img_info [ 0 ] , $img_info [ 1 ] , $img_info [ 4 ] [ 0 ] , $img_info [ 4 ] [ 1 ] ) ;
imagecopyresampled( $image [ 2 ] , $image [ 0 ] , 0 , 0 , 0 , 0 , $img_info [ 2 ] , $img_info [ 3 ] , $img_info [ 4 ] [ 0 ] , $img_info [ 4 ] [ 1 ] ) ;
$new_img [ ] = imagejpeg( $image [ 1 ] , $dir . $udir . '/' . $file , 80 ) ;
$new_img [ ] = imagejpeg( $image [ 2 ] , $dir . $udir . '/thumb_' . $file , 80 ) ;
if ( $new_img [ 0 ] && $new_img [ 1 ] ) {
imagedestroy( $image [ 0 ] ) ;
imagedestroy( $image [ 1 ] ) ;
imagedestroy( $image [ 2 ] ) ;
}
else { echo 'afbeelding ' . $dir . $udir . '/' . $file . 'mislukt!<br />' ; } break ;
case 3 :
// png, als je dit wil maak het zelf dan maar
continue ;
}
}
// $file is GEEN afbeelding, doorgaan...
else { continue ; }
}
// $file is . | .. doorgaan, volgende...
else { continue ; }
}
}
// $udir is . | .. doorgaan, volgende...
else { continue ; }
}
?>
DRUNK - 03/11/2004 22:42 (laatste wijziging 03/11/2004 22:48)
PHP gevorderde
$img_format;
De waarde die jij hieraan geeft kan natuurlijk alles zijn, worden uiteindelijk de maximum hoogte en breedte van al je foto's. Dit is mooi vooral bij album's ed. zodat alle foto's uiteindelijk even groot zijn.
$th_fac;
Hoeveel keer kleiner dan de groote foto moet de thumbnail worden? Dat bepaal je in deze variabele, dus als je $img_format op 640x480 laat staan word de thumbnail MAXIMAAL 128x96.
De verhouding tussen hoogte en breedte zal altijd behouden blijven.
edit: Ondekte net nog een fout in de code op regel 93 en 94, code hierboven is nu aangepast, hier ook de goede regels:
<?php @line 92
$new_img[] = imagejpeg($image[1], $dir . $udir . '/' . $file, 80);
$new_img[] = imagejpeg($image[2], $dir . $udir . '/thumb_' . $file, 80);
?>
<?php @ line 92
$new_img [ ] = imagejpeg( $image [ 1 ] , $dir . $udir . '/' . $file , 80 ) ;
$new_img [ ] = imagejpeg( $image [ 2 ] , $dir . $udir . '/thumb_' . $file , 80 ) ;
?>
ThePhantom - 06/11/2004 01:16
Lid
ik krijg bij dat script een hele rij foutmeldingen
Warning: readdir(): supplied argument is not a valid Directory resource in /home/httpd/vhosts/picturestorage.nl/httpdocs/test.php on line 35
ps. het is wel de bedoeling dat als er afbeeldingen zijn dat er een submap komt met tumbs en dat daarin de verkleinde afbeeldingen komen.
BigBug - 06/11/2004 06:51
PHP expert
Als je ff in het script kijkt:
$dir = './dir/met/gebruikers/'; // hierin zet je de dir. waarin alle mappen van de gebruikers staan
$dir = './dir/met/gebruikers/' ; // hierin zet je de dir. waarin alle mappen van de gebruikers staan
tomk - 06/11/2004 09:46
ASP interesse
hehe wel goed kijken he m8:p
ThePhantom - 06/11/2004 13:55 (laatste wijziging 09/11/2004 01:16)
Lid
Als je ff in het script kijkt:
$dir = './dir/met/gebruikers/'; // hierin zet je de dir. waarin alle mappen van de gebruikers staan
Als je ff in het script kijkt:
$dir = './dir/met/gebruikers/' ; // hierin zet je de dir. waarin alle mappen van de gebruikers staan
die heb ik erin gezet voor ik het script draaide.
Gesponsorde links
Dit onderwerp is gesloten .