Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Dziwna jakość zdjęcia po zmniejszeniu
trifek
post
Post #1





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 28.09.2015

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


Witam serdecznie,
Mam takie zdjęcie: http://serwer1356363.home.pl/pub/a.jpg
Po zmniejszeniu w PHP wychodzi mi coś takiego: http://serwer1356363.home.pl/pub/38603bckl...y4058618838.jpg

Wie ktoś może dlaczego kanapa "wyblakła"?:/
Go to the top of the page
+Quote Post
ostrylg
post
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 18
Dołączył: 11.12.2005
Skąd: Gdańsk

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


A jakiej biblioteki używasz?
Go to the top of the page
+Quote Post
trifek
post
Post #3





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 28.09.2015

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


Używam takiej funkcji:
  1. function upload_obrazka_miniaturka($file, $filetemp, $path, $newname, $wymiar) {
  2. if ($file != "") {
  3. if ($filetemp != "") {
  4. if (is_uploaded_file($filetemp)) {
  5. move_uploaded_file($filetemp, $path . "/" . $newname);
  6.  
  7. //////////////////////////////////
  8. if (preg_match("/php/", $file) || preg_match("/Php/", $file) || preg_match("/PHp/", $file) || preg_match("/PHP/", $file) || preg_match("/pHP/", $file) || preg_match("/phP/", $file) || preg_match("/pHp/", $file)) {
  9. unlink($path . "/" . $newname);
  10. return "Błędny plik - Proszę wybrać inny";
  11. exit();
  12. }
  13. $sizette = getimagesize($path . "/" . $newname);
  14. if ($sizette['mime'] != "image/jpeg" && $sizette['mime'] != "image/jpg" && $sizette['mime'] != "image/png") {
  15. unlink($path . "/" . $newname);
  16. return "Błędny plik - Proszę wybrać inny";
  17. exit();
  18. }
  19. $rozm = filesize($path . "/" . $newname);
  20. if ($rozm > 500000000) {
  21. unlink($path . "/" . $newname);
  22. return "Plik za duży- Proszę wybrać inny";
  23. exit();
  24. }
  25. //////////////////////////////////
  26.  
  27. $file = strtolower($file);
  28. $nazwaobrazka = explode('.', $newname);
  29.  
  30. //Przypisujemy do zmiennej $img_path ścieżke do obrazka
  31. $img_path = $path . "/" . $newname;
  32.  
  33. //Tworzymy scieżkę do miniaturki
  34. $thumb_path = $path . "/mini_" . $nazwaobrazka['0'] . '.' . $nazwaobrazka['1'];
  35.  
  36. //ustalamy maksymalny dopuszczalny rozmiar miniatury
  37. $max_width = $max_height = $wymiar;
  38.  
  39. //Sprawdzamy czy obraz istnieje
  40. //if (!file_exists($img_path))
  41. // die('Plik obrazu nie istnieje');
  42. //Pobieramy informacjie o obrazie
  43. $img_attr = getimagesize($img_path);
  44.  
  45. //Sprawdzamy czy obraz jest wiekszy na szerokość czy na wysokość
  46. // i zmniejszamy odpowiednio rozmiar
  47. // $img_attr[0] - szerokosc, $img_attr[1] - wysokość
  48. if ($img_attr[0] > $img_attr[1]) {
  49. $scale = $img_attr[0] / $max_width;
  50. } else {
  51. $scale = $img_attr[1] / $max_height;
  52. }
  53.  
  54. //Tworzymy obraz miniaturki
  55. $w = floor($img_attr[0] / $scale);
  56. $h = floor($img_attr[1] / $scale);
  57. $thumb = imagecreatetruecolor($w, $h);
  58.  
  59. //Kopiujemy obraz pomniejszajac go,
  60. imagecopyresampled($thumb, imagecreatefromjpeg($img_path), 0, 0, 0, 0, $w, $h, $img_attr[0], $img_attr[1]);
  61.  
  62. if($nazwaobrazka['1'] == "jpg" || $nazwaobrazka['1'] == "jpeg"){
  63. //Kopiujemy obraz pomniejszajac go,
  64. imagecopyresampled($thumb, imagecreatefromjpeg($img_path), 0, 0, 0, 0, $w, $h, $img_attr[0], $img_attr[1]);
  65.  
  66. //Zapisujemy do pliku (jakość 100)
  67. imagejpeg($thumb, $thumb_path, 100);
  68. }
  69.  
  70. if($nazwaobrazka['1'] == "png"){
  71.  
  72. imagealphablending($thumb,false);
  73. $color=imagecolorallocatealpha($thumb,0,0,0,127);
  74. imagefill($thumb,0,0,$color);
  75. imagesavealpha($thumb,true);
  76.  
  77. //Kopiujemy obraz pomniejszajac go,
  78. imagecopyresampled($thumb, imagecreatefrompng($img_path), 0, 0, 0, 0, $w, $h, $img_attr[0], $img_attr[1]);
  79.  
  80. //Zapisujemy do pliku (jakość 100)
  81. imagepng($thumb, $thumb_path);
  82. }
  83.  
  84. /////////////////
  85. $nazwaobrazka = explode('.', $newname);
  86.  
  87. //Przypisujemy do zmiennej $img_path ścieżke do obrazka
  88. $img_path = $path . "/" . $newname;
  89.  
  90. //Tworzymy scieżkę do miniaturki
  91. $thumb_path = $path . "" . $nazwaobrazka['0'] . '.' . $nazwaobrazka['1'];
  92.  
  93. //ustalamy maksymalny dopuszczalny rozmiar miniatury
  94. $max_width = $max_height = 800;
  95.  
  96. //Sprawdzamy czy obraz istnieje
  97. //if (!file_exists($img_path))
  98. // die('Plik obrazu nie istnieje');
  99. //Pobieramy informacjie o obrazie
  100. $img_attr = getimagesize($img_path);
  101.  
  102. //Sprawdzamy czy obraz jest wiekszy na szerokość czy na wysokość
  103. // i zmniejszamy odpowiednio rozmiar
  104. // $img_attr[0] - szerokosc, $img_attr[1] - wysokość
  105. if ($img_attr[0] > $img_attr[1]) {
  106. $scale = $img_attr[0] / $max_width;
  107. } else {
  108. $scale = $img_attr[1] / $max_height;
  109. }
  110.  
  111. //Tworzymy obraz miniaturki
  112. $w = floor($img_attr[0] / $scale);
  113. $h = floor($img_attr[1] / $scale);
  114. $thumb = imagecreatetruecolor($w, $h);
  115.  
  116. if($nazwaobrazka['1'] == "jpg" || $nazwaobrazka['1'] == "jpeg"){
  117. //Kopiujemy obraz pomniejszajac go,
  118. imagecopyresampled($thumb, imagecreatefromjpeg($img_path), 0, 0, 0, 0, $w, $h, $img_attr[0], $img_attr[1]);
  119.  
  120. //Zapisujemy do pliku (jakość 100)
  121. imagejpeg($thumb, $thumb_path, 100);
  122. }
  123.  
  124.  
  125.  
  126. if($nazwaobrazka['1'] == "png"){
  127.  
  128.  
  129. imagealphablending($thumb,false);
  130. $color=imagecolorallocatealpha($thumb,0,0,0,127);
  131. imagefill($thumb,0,0,$color);
  132. imagesavealpha($thumb,true);
  133.  
  134. //Kopiujemy obraz pomniejszajac go,
  135. imagecopyresampled($thumb, imagecreatefrompng($img_path), 0, 0, 0, 0, $w, $h, $img_attr[0], $img_attr[1]);
  136.  
  137. //Zapisujemy do pliku (jakość 100)
  138. imagepng($thumb, $thumb_path);
  139.  
  140. }
  141.  
  142. /////////////////
  143.  
  144. return $img_path;
  145. } else {
  146. echo"<center><b>Nie można dodać pliku!!</b> Błąd: " . $file . " </center> <br/>";
  147. }
  148. }
  149. }
  150. }
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Prawdopodobnie zdjęcie ma osadzony profil kolorów, którego biblioteka GD nie bierze pod uwagę.


--------------------
Go to the top of the page
+Quote Post
trifek
post
Post #5





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 28.09.2015

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


a jak to sprawdzić/zmienić?
Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Wczytaj zdjęcie do jakiegoś programu graficznego. Jeśli ten program potrafi odczytywać profil kolorów, to zapisz ponownie jako nowy plik. Potem sprawdź skalowanie.

GD nie odczytuje profili, Imagick chyba potrafi. http://stackoverflow.com/questions/5773032...resizing-images


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 13:14