login  Naam:   Wachtwoord: 
Registreer je!
 Forum

script maken?

Offline ThePhantom - 03/11/2004 18:20
Avatar van ThePhantomLid wie kan voor mij een eenmalig script maken
die voor mij een bepaalde map afzoekt naar foto's deze met php resized en vervolgens weer als tumb wegsaved.
de oude structuur is als volgt

web > gebruiker1 > foto1,foto2 enz
web > gebruiker2 > foto1,foto2 enz

de nieuwe structuur moet worden

web > gebruiker 1 > foto1,foto2
web > gebruiker 1 > foto1,tumb_foto1,foto2,tumb_foto2

hoop dat het een beetje duidelijk is 
alle gebruikers staan in een database.
het zijn teveel mappen en foto's om met de hand te doen 

12 antwoorden

Gesponsorde links
Offline DRUNK - 03/11/2004 18:51
Avatar van DRUNK 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.
Offline ThePhantom - 03/11/2004 18:57
Avatar van ThePhantom Lid okay , het moet 1x uitgevoerd worden
daarna komt er een script dat dit meteen bij uploaden gebeurt.
Offline Thomas - 03/11/2004 19:05
Avatar van Thomas 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'.
Offline ThePhantom - 03/11/2004 19:21
Avatar van ThePhantom 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
Offline DRUNK - 03/11/2004 20:46 (laatste wijziging 03/11/2004 22:46)
Avatar van DRUNK 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.
  1. <?php error_reporting(E_ALL);
  2.  
  3. $img_format = '640x480'; // formaat van afbeelding
  4. $th_fac = 5; // hoeveel keer kleiner moet de thumbnail worden?
  5. $dir = './dir/met/gebruikers/'; // hierin zet je de dir. waarin alle mappen van de gebruikers staan
  6.  
  7. // Kijen of $dir een directory is
  8. if (!is_dir($dir)) {
  9. die($dir . ' is geen directory!');
  10. }
  11.  
  12. // $dir openen, lukt dit niet
  13. // stop uitvoeging en geef melding
  14. if (!$dh = opendir($dir)) {
  15. die('Kan ' . $dir . ' niet openen!');
  16. }
  17.  
  18. // $dir uitlezen, elke file en dir in var $udir zetten
  19. while (($udir = readdir($dh)) !== false) {
  20.  
  21. // ALS de var $udir GEEN . | .. is...
  22. if ($udir !== '.' || $udir !== '..') {
  23.  
  24. // Kijk of $udir een directory is,
  25. // is dit niet het geval: doorgaan, volgende...
  26. if (!is_dir($dir . $udir)) continue;
  27.  
  28. // ALS $udir, NIET geopend kan worden...
  29. if (!$udh = opendir($dir . $udir)) {
  30. die('Kan ' . $dir . $udir . ' niet openen!');
  31. }
  32.  
  33. // $udir is een dir, loop deze door en zet
  34. // alle resultaten in var $file
  35. while ($file = readdir($dir . $udir) !== false) {
  36.  
  37. // ALS de var $file GEEN . | .. is...
  38. if ($file !== '.' || $file !== '..') {
  39.  
  40. // Eenvoudige controle, kijk dmv getimagesize()
  41. // of $file een afbeelding is, zonder '@' teken
  42. // hiervoor zal het een foutmelding geven als
  43. // $file GEEN afbeelding is, dit wil je niet dus
  44. // onderdrukken. Hierna begint het verkleinen
  45. // van de afbeeldingen.
  46. if (@getimagesize($dir . $udir . '/' . $file)) {
  47.  
  48. // informatie over $file in $size zetten
  49. $size = getimagesize($dir . $udir . '/' . $file);
  50.  
  51. // $max_xy, array 0 => width, 1 => height
  52. $max_xy = explode('x', $img_format);
  53.  
  54. if ($size[0] > $size[1]) {
  55.  
  56. $new_x = $max_xy[0];
  57. $__fac = ($size[0] / $max_xy[0]);
  58. $new_y = ($size[1] / $__fac);
  59. $_th_x = ($max_xy[0] / $th_fac);
  60. $_th_y = (($size[1] / $__fac) / $th_fac);
  61. }
  62. else if ($size[1] > $size[0]) {
  63.  
  64. $new_y = $max_xy[1];
  65. $__fac = ($size[1] / $max_xy[1]);
  66. $new_x = ($size[0] / $__fac);
  67. $_th_x = (($size[0] / $__fac) / $th_fac);
  68. $_th_y = ($max_xy[1] / $th_fac);
  69. }
  70. else {
  71.  
  72. $new_y = $max_xy[1];
  73. $new_x = $max_xy[0];
  74. $_th_x = $max_xy[0] / $th_fac;
  75. $_th_y = $max_xy[1] / $th_fac;
  76. }
  77.  
  78. // Kijen wat voor plaatje het is (gif, jpg, png ...)
  79. switch($size[2]) {
  80.  
  81. case 1 :
  82. // gif GD2 ondersteund het niet!
  83. continue;
  84.  
  85. case 2 :
  86. $image[] = imagecreatefromjpeg($src_img);
  87. $image[] = imagecreatetruecolor($img_info[0], $img_info[1]);
  88. $image[] = imagecreatetruecolor($img_info[2], $img_info[3]);
  89.  
  90. imagecopyresampled($image[1], $image[0], 0, 0, 0, 0, $img_info[0], $img_info[1], $img_info[4][0], $img_info[4][1]);
  91. imagecopyresampled($image[2], $image[0], 0, 0, 0, 0, $img_info[2], $img_info[3], $img_info[4][0], $img_info[4][1]);
  92.  
  93. $new_img[] = imagejpeg($image[1], $dir . $udir . '/' . $file, 80);
  94. $new_img[] = imagejpeg($image[2], $dir . $udir . '/thumb_' . $file, 80);
  95.  
  96. if ($new_img[0] && $new_img[1]) {
  97.  
  98. imagedestroy($image[0]);
  99. imagedestroy($image[1]);
  100. imagedestroy($image[2]);
  101. }
  102. else { echo 'afbeelding ' . $dir . $udir . '/' . $file . 'mislukt!<br />'; }
  103. break;
  104.  
  105. case 3 :
  106. // png, als je dit wil maak het zelf dan maar
  107. continue;
  108. }
  109. }
  110.  
  111. // $file is GEEN afbeelding, doorgaan...
  112. else { continue; }
  113. }
  114.  
  115. // $file is . | .. doorgaan, volgende...
  116. else { continue; }
  117. }
  118. closedir($udh);
  119. }
  120.  
  121. // $udir is . | .. doorgaan, volgende...
  122. else { continue; }
  123. }
  124. closedir($dh);
  125.  
  126. ?>
Offline ThePhantom - 03/11/2004 22:08
Avatar van ThePhantom Lid elke afbeelding is natuurlijk niet 640x480 , die zijn allemaal verschillend maar kijk wel even wat ik er mee kan , in ieder geval alvast thx 
Offline DRUNK - 03/11/2004 22:42 (laatste wijziging 03/11/2004 22:48)
Avatar van DRUNK 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:
  1. <?php @line 92
  2. $new_img[] = imagejpeg($image[1], $dir . $udir . '/' . $file, 80);
  3. $new_img[] = imagejpeg($image[2], $dir . $udir . '/thumb_' . $file, 80);
  4. ?>
Offline BladiN - 03/11/2004 23:55
Avatar van BladiN Gouden medailleGouden medaille

Grafische gevorderde
Maar volgens mij moet het niet als een thumb worden opgeslagen maar gewoon in een var komen
Offline ThePhantom - 06/11/2004 01:16
Avatar van ThePhantom 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.
Offline BigBug - 06/11/2004 06:51
Avatar van BigBug PHP expert Als je ff in het script kijkt:

  1. $dir = './dir/met/gebruikers/'; // hierin zet je de dir. waarin alle mappen van de gebruikers staan
Offline tomk - 06/11/2004 09:46
Avatar van tomk ASP interesse hehe wel goed kijken he m8:p
Offline ThePhantom - 06/11/2004 13:55 (laatste wijziging 09/11/2004 01:16)
Avatar van ThePhantom Lid
  1. Als je ff in het script kijkt:
  2.  
  3. $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.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.216s