Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: losowe pomniejszone zdjęcie
Forum PHP.pl > Forum > PHP
waser
używam skryptu JARD (ale sprawdzalem tez to na simple random image) do losowania grafiki na stronie, daje aby losowa grafika pojawiala ie w rozmiarze 120x100 i raz wychodza zdjecia ladne raz czarno biale raz z widocznymi pixelami:( czemu one sa takie brzydkie mozna to jakos poprawić, to wina skryptu czy czego? pisalo cos ze wymaga to biblioteki gd....
Speedy
Owszem, dynamiczne generowanie miniaturek wymaga biblioteki gd, ale jeżeli coś Ci się produkuje , to znaczy , że zapewne ją masz.
Do takiego prostego zadania, jak losowanie obrazka i wyświetlenie miniaturki, polecałbym dla świętego spokoju samemu coś takiego napisać.
Sympatyczny skrypt do generowania miniaturek możesz znaleźć tutaj -> http://php5.pl/grafika/zmiana_rozdzielczos...aniem_proporcji

Poza tym nie znam tego skryptu JARD, więc na jego temat nic nie napiszę.

Pozdrawiam.
waser
fajnie dzieki za ten skrypt tylko chodzi oto ze to oprocz fajnej miniaturki ma tez losowac zdjecie z danego katalogu (dokladnie 3 ale to prostu 3 razy dam ten kod) i dopiero to zdjecie minimalizowac, gdyby nie to losowanie to poprostu zainstalowal bym jakis dobry skrypt grafiki:(
GDYBY SIE KOMUŚ HCIALO PRZEJzec ten skrypt J.A.R.D i cos mi pomoc to bylo by bardzo fajnie:
  1. <?php
  2.  
  3. /*
  4. |-------------------------------------------------------------------------------------------------------|
  5. | JARD : Just Another Random Displayer |
  6. | Copyright Š 2003 - Alessandro Pellegrini (alessandro.pellegrini@tin.it) |
  7. | You are allowed to use, edit and copy this script. Just leave this copyright n
  8. tice intact. |
  9. |-------------------------------------------------------------------------------------------------------|
  10. | Syntax: <img src=\"rid.php\"> ===> Displays a random image |
  11. | <img src=\"rid.php?tnsize=XXX\"> ===> Displays a random image of a given |
  12. |  size. |
  13. |-------------------------------------------------------------------------------------------------------|
  14. | How to use: |
  15. | Put this file in a directory containing all the images you want to display |
  16. | randomly. If there are no-image files, the script won't consider them. |
  17. | Then connect to this script directly from the addres bar or trought an <img> tag in a |
  18. | html page. |
  19. |-------------------------------------------------------------------------------------------------------|
  20. | What this script supports: |
  21. | This script can handle any gif, jpeg, and png image file. There is no bmp supp
  22. rt as long |
  23. | as I think bmp is not a great format for the web. Maybe in a further version I'll add it, or |
  24. | you may add it yourself... |
  25. |-------------------------------------------------------------------------------------------------------|
  26. | Requirements: |
  27. | This script requires GD Libraries. If you want JPG support, you must have inst
  28. lled |
  29. | version 1.6.2 or lower, as long as the JPEG group asked to remove this support
  30. due to  |
  31. | Copyright motivations... |
  32. | To use any other support, you must have at least php 4.3.0 on your server... |
  33. |-------------------------------------------------------------------------------------------------------|
  34. |  FOR ANY QUESTION OR BUG REPORT, CONTACT ME AT alessandro.pellegrini@tin.it |
  35. |-------------------------------------------------------------------------------------------------------|
  36. */
  37.  
  38.  
  39. // Opens the current folder
  40. $folder=opendir(&#092;".\"); 
  41.  
  42. // Stores all the files in the directory and counts their number
  43. while ($file = readdir($folder)) 
  44. $names[count($names)] = $file; 
  45.  
  46. // Closes the directory
  47. closedir($folder);
  48.  
  49. // Sorts the names alphabetically
  50. sort($names);
  51.  
  52. // Removes all non-image files
  53. $tempvar=0;
  54. for ($i=0;$names[$i];$i++){
  55. $ext=strtolower(substr($names[$i],-4));
  56. if ($ext==&#092;".jpg\"||$ext==\".gif\"||$ext==\"jpeg\"||$ext==\".png\"){$names1[$tempvar]=$names[$i];$tempvar++;}
  57. }
  58.  
  59. // Choses one random image
  60. srand ((double) microtime() * 10000000);
  61. $rand_keys = array_rand ($names1, 2);
  62. $slika=$names1[$rand_keys[0]]; 
  63.  
  64. // Checks if you've choosen to resize the image
  65. if (!isset($tnsize)) {
  66.  
  67. // If not, it displays the choosen image
  68. header (&#092;"Location: $slika\");
  69.  
  70. } else {
  71.  
  72. // Checks if the given size is valid
  73. $tnsize = (integer) $tnsize;
  74. if (($tnsize<20) or ($tnsize>300)){
  75.  
  76. // If not, it creates an error image and displays it
  77.  $img = ImageCreate(100, 100);
  78.  $red = ImageColorAllocate($img, 255, 0, 0);
  79.  $yellow = ImageColorAllocate($img, 255,255, 0);
  80.  ImageString($img, 4, 20, 20, &#092;"Dimensione\", $yellow);
  81.  ImageString($img, 4, 20, 40, &#092;"fornita\", $yellow);
  82.  ImageString($img, 4, 20, 60, &#092;"errata!\", $yellow);
  83.  ImagePNG($img);
  84.  ImageDestroy($img);
  85.  exit();
  86. }
  87.  
  88. // We're now sure the image is valid. Now we have to resize it, we're about to use GD libraries.
  89.  
  90. // It now checks the image format and loads it into a variable
  91. if ($ext==&#092;".jpg\" || $ext==\"jpeg\"){
  92. $bigimage = @ImageCreateFromJPEG($slika);
  93. }
  94. if ($ext==&#092;".gif\"){
  95. $bigimage = @ImageCreateFromGIF($slika);
  96. }
  97. if ($ext==&#092;".png\" || $ext==\"jpeg\"){
  98. $bigimage = @ImageCreateFromPNG($slika);
  99. }
  100.  
  101. // It now creates an empty image of the given size
  102.  
  103. $tnimage = ImageCreate($tnsize, $tnsize);
  104. $darkblue = ImageColorAllocate($tnimage, 0,0, 127);
  105. ImageColorTransparent($tnimage,$darkblue);
  106.  
  107. // It now calculates the resizing image factor
  108. $sz = GetImageSize($slika);
  109. $x = $sz[0];
  110. $y = $sz[1];
  111. if ($x>$y) {
  112.  $dx = 0;
  113.  $w = $tnsize;
  114.  $h = ($y / $x) * $tnsize;
  115.  $dy = ($tnsize - $h) / 2;
  116. }else{
  117.  $dy = 0;
  118.  $h = $tnsize;
  119.  $w = ($x / $y) * $tnsize;
  120.  $dx = ($tnsize - $w) / 2;
  121. }
  122.  
  123. // Resizes the image
  124. ImageCopyResized($tnimage, $bigimage, $dx, $dy, 0, 0, $w, $h,$x, $y);
  125.  
  126. // Displays the image
  127. ImagePNG($tnimage);
  128.  
  129. // Clears the variables
  130. ImageDestroy($tnimage);
  131. ImageDestroy($bigimage);
  132. }
  133.  
  134. ?>
Speedy
O ja...

Ale ten JARD niezły laugh.gif .
M. in. rosrzerzenia plików kalecznie czyta ... To się robi za pomocą pathinfo() .

Sczerze mówiąc , niespecjalnie chce mi się dogłębnie analizować ewentualne błędy w tym skrypcie, który zresztą i tak mnie nie kręci .

Napisałem za to przed chwilą, w ramach rozrywki prostszy i do tego działający skrypt, który powinien spełnić Twoje oczekiwania winksmiley.jpg .

  1. <?php
  2.  
  3. $dir  = './'; // sciezka do katalogu z obrazkami
  4.  
  5. $files = scandir($dir);
  6. $ile  = count($files) - 2;
  7. $losowy_element = rand(2,$ile);
  8.  
  9. $losowy_plik = $files[$losowy_element];
  10.  
  11. $path_parts = pathinfo($losowy_plik);
  12.  
  13. if($path_parts['extension'] == &#092;"jpg\" || $path_parts['extension'] == \"jpeg\" || $path_parts['extension'] == \"gif\" ||  $path_parts['extension'] == \"png\") 
  14. {
  15.  
  16. echo &#092;"<img src=\"thumbnail.php?fileName=\".$losowy_plik.\"\" alt=\"\" />\"; // wyswietlanie pojedynczego, wylosowanego obrazka
  17.  
  18. } 
  19.  
  20. else {
  21. echo 'ERROR! : wylosowany plik nie jest zdefiniowanym obrazkiem';
  22. }
  23.  
  24. ?>


Poza tym musisz jeszcze mieć skrypt do generowania miniatur, ja wykorzystałem ten , ze strony , którą wcześniej podałem
Zapisujesz go pod nazwą thumbnail.php .

  1. <?php
  2.  
  3. define('THUMBNAIL_SIZE', 150);
  4.  
  5. if (!isset($_GET['fileName']) ||
  6. !file_exists($_GET['fileName']))
  7. die();
  8. $pathInfo = pathinfo($_GET['fileName']);
  9. if ($pathInfo['extension'] == 'jpg')
  10. $pathInfo['extension'] = 'jpeg';
  11. if (!function_exists(($fName =
  12. 'imagecreatefrom'.$pathInfo['extension'])))
  13. die();
  14.  
  15. $imgHandle = $fName($_GET['fileName']);
  16. $ratio = ($imgW = imagesx($imgHandle)) /
  17. ($imgH = imagesy($imgHandle));
  18. if ($ratio > 1) {
  19. $newImgW = THUMBNAIL_SIZE;
  20. $newImgH = THUMBNAIL_SIZE / $ratio;
  21. } else {
  22. $newImgW = THUMBNAIL_SIZE * $ratio;
  23. $newImgH = THUMBNAIL_SIZE;
  24. }
  25. $newImageHandle = imagecreatetruecolor($newImgW,
  26. $newImgH);
  27. imagecopyresampled($newImageHandle, $imgHandle,
  28. 0, 0, 0, 0, $newImgW, $newImgH, $imgW, $imgH);
  29.  
  30. header('Content-type: image/'.$pathInfo['extension']);
  31. $fName = 'image'.$pathInfo['extension'];
  32. $fName($newImageHandle);
  33.  
  34. ?>
waser
heheh no spoko za fatyge:d tylko zanim go przetestuje powiedz czy do tego potrzeba php 5 bo jesli tak to szkoda zachodu bo nie znam darmowego hosta z php 5:(
Speedy
niestety funckja scandir() jest dostępna tylko w php5 .
Mimo to udało mi się znaleźć wersję tej funkcji dla php4 winksmiley.jpg

W związku z czym mały update skryptu

  1. <?php
  2.  
  3. if (!function_exists (scandir))
  4. {
  5. function scandir($dir)
  6. {
  7. $dh = opendir($dir);
  8. while (false !== ($filename = readdir($dh)))
  9. {
  10. $files[] = $filename;
  11. }
  12. return $files;
  13. }
  14. } 
  15.  
  16. $dir  = './'; // sciezka do katalogu z obrazkami
  17.  
  18. $files = scandir($dir);
  19. $ile  = count($files) - 2;
  20. $losowy_element = rand(2,$ile);
  21.  
  22. $losowy_plik = $files[$losowy_element];
  23.  
  24. $path_parts = pathinfo($losowy_plik);
  25.  
  26. if($path_parts['extension'] == &#092;"jpg\" || $path_parts['extension'] == \"jpeg\" || $path_parts['extension'] == \"gif\" || $path_parts['extension'] == \"png\") 
  27. {
  28.  
  29. echo &#092;"<img src=\"thumbnail.php?fileName=\".$losowy_plik.\"\" alt=\"\" />\"; // wyswietlanie pojedynczego, wylosowanego obrazka
  30.  
  31. } 
  32.  
  33. else {
  34. echo 'ERROR! : wylosowany plik nie jest zdefiniowanym obrazkiem';
  35. }
  36.  
  37. ?>
waser
kurcze ale ja mam teraz kolejny problem bo skrypt thumbnail.php tez wymaga php 5, bo samodzielnie mi nie dziala, wyswietla sie okienko o rozmiarach obrazka ale w srodku jest x....
Speedy
Hm... to w takim układzie jaką masz wersję php ?
Ja mam 4.3.9. i śmiga .

Pozdrawiam.
waser
hehhe czyli ja cos namotalem ok zaraz posprawdzam bo ja mam wersje 4.3.10 :] tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.