Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skalowanie obrazka i jego zapis
wgrzelak
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 22.12.2007

Ostrzeżenie: (0%)
-----


No więc mój problem polega na tym że mam upload obrazka i potrzebuje żeby obrazek się skalował i zapisywał proporcjonalnie i żeby była funkcja utraty jakosci.

  1. <?php
  2. $userfile = $_FILES["userfile"];
  3. $uploadfile = $GLOBALS["uploaddir"] . "".$hash.".jpg";
  4. $image_types = Array ("image/bmp","image/jpeg", "image/pjpeg","image/gif","image/x-png");
  5. $file_name = "".$hash.".jpg";
  6. $file_size = $_FILES["userfile"]["size"];
  7. $file_type = $_FILES["userfile"]["type"];
  8. $file_size = makesize1($file_size);
  9.  
  10. if (isset($_FILES["userfile"]))
  11. {
  12. if (!$file_name)
  13. {
  14. // do nothing...
  15. }
  16. else
  17. {
  18. if ($file_size > $GLOBALS["file_limit"])
  19. {
  20. err_msg (ERROR,FILE_UPLOAD_TO_BIG."$file_limit KB, ".IMAGE_WAS." $file_size");
  21. blocksx_end();
  22. stdfoot();
  23. }
  24. if (in_array (strtolower ($file_type), $image_types, TRUE))
  25. {
  26. if (@move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
  27. {
  28. echo"<center>Upload obrazka pomyślny</center><br />";
  29. }
  30. else
  31. {
  32. err_msg (ERROR,MOVE_IMAGE_TO.$GLOBALS["uploaddir"].$file_name.CHECK_FOLDERS_PERM);
  33. blocksx_end();
  34. stdfoot();
  35. }
  36. }
  37. else
  38. {
  39. err_msg (ERROR,ILEGAL_UPLOAD);
  40. blocksx_end();
  41. stdfoot();
  42. }
  43. }
  44. }
  45. ?>


Ten post edytował wgrzelak 26.12.2007, 21:49:43
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Nattfarinn
post
Post #2





Grupa: Zarejestrowani
Postów: 136
Pomógł: 22
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Dane wejściowe:
Kod
$imageFile - plik wejściowy (np. $_FILES["plik"]["tmp_name"])
$maxImageWidth - maksymalna szerokość obrazka wyjściowego (np. '100')
$maxImageHeight - maksymalna wysokość obrazka wyjściowego (np. '80')
$newImageName - nazwa pliku wyjściowego (bez rozszerzenia .jpg) (np. "miniatura")
$imageQuality - jakość obrazka wyjściowego (zakres 1..100) (np. '80')


  1. <?php
  2.  
  3. $imageData = imagecreatefromjpeg($imageFile);
  4. list($imageWidth, $imageHeight) = getimagesize($imageFile);
  5. $imageRatioWidth = $imageWidth > $maxImageWidth ? $maxImageWidth / $imageWidth : 1;
  6. $imageRatioHeight = $imageHeight * $imageRatioWidth > $maxImageHeight ? $maxInameHeight / $imageHeight : 1;
  7. $newImageSizeWidth = floor($imageWidth * $imageRatioWidth * $imageRatioHeight);
  8. $newImageSizeHeight = floor($imageHeight * $imageRatioWidth * $imageRatioHeight);
  9. $newImage = imagecreatetruecolor($newImageSizeWidth, $newImageSizeHeight);
  10. imagecopyresampled($newImage, $imageData, 0, 0, 0, 0, $newImageSizeWidth, $newImageSizeHeight, $imageWidth, $imageHeight);
  11. $savePath = $newImageName.".jpg";
  12. imagejpeg($newImage, $savePath, $imageQuality);
  13.  
  14. ?>


Maksymalny rozmiar docelowy ($maxImageWidth i $maxImageHeight) to właściwie rozmiar pliku który chcesz uzyskać po zmianie rozmiaru z tą tylko różnicą, że jeśli grafika wejściowa będzie mniejsza niż wyjściowa, nie ulegnie zmianie (zapobiega rozciąganiu małych obrazków).

Ten post edytował Nattfarinn 27.12.2007, 16:00:21
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 09:47