Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: skalowanie zdjęć - poszarpane krawędzie
Forum PHP.pl > Forum > PHP
john_doe
Witam,

napisałem funkcję, która skaluje zdjęcia
  1. function resizeImg( $plik, $extension, $height )
  2. {
  3. $rozmiar = getimagesize( $plik );
  4.  
  5. $szerokosc = $rozmiar[0];
  6.  
  7. $wysokosc = $rozmiar[1];
  8.  
  9. $nowa_wysokosc = $height;
  10.  
  11. $nowa_szerokosc = $szerokosc * ( $nowa_wysokosc / $wysokosc );
  12.  
  13. switch( $extension )
  14. {
  15. case 'jpg':
  16. $oryginal = imageCreateFromJpeg( $plik );
  17. break;
  18.  
  19. case 'JPG':
  20. $oryginal = imageCreateFromJpeg( $plik );
  21. break;
  22.  
  23. case 'jpeg':
  24. $oryginal = imageCreateFromJpeg( $plik );
  25. break;
  26.  
  27. case 'JPEG':
  28. $oryginal = imageCreateFromJpeg( $plik );
  29. break;
  30.  
  31. case 'gif':
  32. $oryginal = imageCreateFromGif( $plik );
  33. break;
  34.  
  35. case 'GIF':
  36. $oryginal = imageCreateFromGif( $plik );
  37. break;
  38.  
  39. case 'png':
  40. $oryginal = imageCreateFromPng( $plik );
  41. break;
  42.  
  43. case 'PNG':
  44. $oryginal = imageCreateFromPng( $plik );
  45. break;
  46.  
  47. }
  48.  
  49. $obrazek = ImageCreateTrueColor( $nowa_szerokosc, $nowa_wysokosc );
  50.  
  51. ImageCopyResized( $obrazek, $oryginal, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc );
  52.  
  53. ImageJPEG( $obrazek, $plik );
  54. }


i uploaduje zdjęcia tak używając powyższej funkcji
  1. foreach ( $_FILES['myFile']['error'] as $key => $error )
  2. {
  3. if ( $error == UPLOAD_ERR_OK )
  4. {
  5. $tmp_name = $_FILES['myFile']['tmp_name'][$key];
  6. $fileName = $_FILES['myFile']['name'][$key];
  7. $fileExtension = end(explode(".", $fileName));
  8.  
  9. if( ! in_array( $fileExtension, $allowedFileTypes ) )
  10. {
  11. print "<b>LOG: Plik ma błędne rozszerzenie</b>";
  12. }
  13.  
  14. if( ! file_exists( $_SERVER['DOCUMENT_ROOT'].'root/gallery/galleries//' . $fileName ) )
  15. {
  16. if( move_uploaded_file( $tmp_name, $uploadPathPhotos . $fileName))
  17. {
  18. print 'Wgranie pliku <b>' . $fileName . '</b> - <font style="color: green; font-weight: bold;">Success!</font><br />';
  19.  
  20. resizeImg( 'galleries/' . $fileName, $fileExtension, 500 );
  21.  
  22. copy( 'galleries/' . $fileName, 'galleries/minis/mini_' . $fileName);
  23.  
  24. resizeImg( 'galleries/minis/mini_' . $fileName, $fileExtension, 98 );
  25.  
  26. include('../db/querries.php');
  27. connect( $INSERT_PHOTOS ); // do sprawdzenia czy kosi
  28.  
  29. }else print 'Problem z uploadem zdjęcia<br />';
  30. }
  31. else {
  32. print 'Wgranie pliku <b>' . $fileName . '</b> - <font style="color: #b02329; font-weight: bold;">Error - plik o takiej nazwie już istnieje!</font><br />';
  33. }
  34.  
  35. }
  36. }


problem w tym, że np. wgrywane fotki sa 1024-768 skaluje na wysokość 500 lub 98 tracę jakość zdjęcia a miniatury to już napewno



darko
http://php.net/manual/pl/function.strtolower.php - to dla rozszerzeń
http://php.net/manual/pl/function.imagecopyresampled.php - a to dla skalowania

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.