Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zmiana rozmiaru obrazka
Forum PHP.pl > Forum > Przedszkole
enemyofarcha
Witam, mam funkcję która tworzy mi miniaturki obrazów, jednak brakuje mi w tym by plik główny nie przekraczał rozdzielczości (do np. 640x480). A że też nie mam pojęcia jak to zrobić to proszę o pomoc. Funkcję na miniaturki kiedyś znalazłem na necie..

  1. <?php
  2. function uploadobrazka(){
  3. $plik_tmp = $_FILES['obrazek']['tmp_name'];
  4. $plik_nazwa = $_FILES['obrazek']['name'];
  5. $is_obrazek = explode('.',$plik_nazwa);
  6. $is_obrazek[1] = strtolower($is_obrazek[1]);
  7.  
  8. if (($is_obrazek[1] == 'jpg')){
  9. if(is_uploaded_file($plik_tmp)) {
  10. $sciezka_miniaturki = '../images/portfolio/' . $_FILES['obrazek']['name'];
  11. move_uploaded_file($plik_tmp, "../images/portfolio/$plik_nazwa");
  12. }
  13. } else {
  14. if ($plik_nazwa == NULL) {
  15. return 0;
  16. } else {
  17. echo "Format pliku nie jest zgodny z JPEG";
  18. } }
  19.  
  20. $img = imagecreatefromjpeg($sciezka_miniaturki);
  21. $size = GetImageSize( $sciezka_miniaturki);
  22. if($size[0] > $size[1])
  23. {
  24. $thumbnail_width = 100;
  25. $thumbnail_height = (int)(100 * $size[1] / $size[0]);
  26. } else {
  27. $thumbnail_width = (int)(100 * $size[0] / $size[1]);
  28. $thumbnail_height = 100;
  29. }
  30.  
  31. $img_mini = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
  32. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $size[0], $size[1]);
  33. imagejpeg($img_mini, '../images/portfolio/' . "tb_".basename($_FILES["obrazek"]['name']), 100);
  34. imagedestroy($img);
  35. imagedestroy($img_mini);
  36. }
  37. ?>


I teraz pytanie jak to zrobić??
erix
  1. $img = imagecreatefromjpeg($sciezka_miniaturki);
  2. $size = GetImageSize( $sciezka_miniaturki);
  3.  
  4. if($size[0] > $size[1])
  5. {
  6. $thumbnail_width = 100;
  7. $thumbnail_height = (int)(100 * $size[1] / $size[0]);
  8. } else {
  9. $thumbnail_width = (int)(100 * $size[0] / $size[1]);
  10. $thumbnail_height = 100;
  11. }
  12.  
  13. $img_mini = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
  14. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $size[0], $size[1]);
  15. imagejpeg($img_mini, '../images/portfolio/' . "tb_".basename($_FILES["obrazek"]['name']), 100);
  16. imagedestroy($img);
  17. imagedestroy($img_mini);

Kopiujesz ten kod zmieniając tak, aby operował na głównym obrazku.

Masz wskazówki, teraz rusz głową i składaj zegarek. (;
enemyofarcha
I dzięki winksmiley.jpg mniej więcej z tym kombinowałem, ale trochę nie tak jak powinno być.. Załatwiłem sprawę od razu, dzięki winksmiley.jpg

Jeszcze jeden problem mam w owym skrypcie.. Wszystko pięknie działa, ale.. No właśnie jest ale, obrazki w dużo mniejszej rozdzielczości również skaluje do rozmiarów w skrypcie, a nie powinien.

Do wczoraj dodawałem poprzez ten skrypt zdjęcia o wielkiej rozdzielczości (3000x2000), dzisiaj dodałem zdjęcie ze starej komórki w której rozdzielczość to ~300x200. Nie mniej na stronie zostały rozciągnięte do 800x600.

  1. function uploadzdjecia(){
  2. $plik_tmp = $_FILES['zdjecie']['tmp_name'];
  3. $plik_nazwa = $_FILES['zdjecie']['name'];
  4. $is_obrazek = explode('.',$plik_nazwa);
  5. $is_obrazek[1] = strtolower($is_obrazek[1]);
  6.  
  7. if (($is_obrazek[1] == 'jpg')){
  8. if(is_uploaded_file($plik_tmp)) {
  9. $sciezka_miniaturki = '../images/zdjecia/' . $_FILES['zdjecie']['name'];
  10. move_uploaded_file($plik_tmp, "../images/zdjecia/$plik_nazwa");
  11. } } else {
  12. if ($plik_nazwa == NULL) { return 0; } else {
  13. echo "Format pliku nie jest zgodny z JPEG";
  14. } }
  15. $img = imagecreatefromjpeg($sciezka_miniaturki);
  16. $size = GetImageSize( $sciezka_miniaturki);
  17. if($size[0] > $size[1])
  18. {
  19. $thumbnail_width = 100;
  20. $thumbnail_height = (int)(100 * $size[1] / $size[0]);
  21. } else {
  22. $thumbnail_width = (int)(100 * $size[0] / $size[1]);
  23. $thumbnail_height = 100;
  24. }
  25. $img_mini = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
  26. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $size[0], $size[1]);
  27. imagejpeg($img_mini, '../images/zdjecia/' . "tb_".basename($_FILES["zdjecie"]['name']), 100);
  28. imagedestroy($img);
  29. imagedestroy($img_mini);
  30. $sciezka_pliku = '../images/zdjecia/' . $_FILES['zdjecie']['name'];
  31. $img = imagecreatefromjpeg($sciezka_pliku);
  32. $size = GetImageSize($sciezka_pliku);
  33. if($size[0] > $size[1])
  34. {
  35. $max_width = 800;
  36. $max_height = (int)(800 * $size[1] / $size[0]);
  37. } else {
  38. $max_width = (int)(800 * $size[0] / $size[1]);
  39. $max_height = 800;
  40. }
  41. $img_mini = imagecreatetruecolor($max_width, $max_height);
  42. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $max_width, $max_height, $size[0], $size[1]);
  43. imagejpeg($img_mini, '../images/zdjecia/' .basename($_FILES["zdjecie"]['name']), 100);
  44. imagedestroy($img);
  45. imagedestroy($img_mini);
  46. }
erix
To nie możesz sprawdzić rozmiarów przed skalowaniem? Jeśli mniejsze niż wymagane - pomijaj skalowanie, jeden dodatkowy warunek.
enemyofarcha
No tak, tylko jak to zrobić.. Nie mówię, że od razu ktoś ma mi wszystko na tacy podać, ale jakieś wskazówki byłyby bardzo przydatne winksmiley.jpg
thek
Z pobranego pliku można pobrać rozdzielczość obrazka. Już tego nawet używasz size[0] i size[1] smile.gif Sprawdzaj czy tutaj są większe czy nie i odpowiednio skaluj lub nie winksmiley.jpg
enemyofarcha
Powiem tak wiem o co chodzi postach w/w, ale nie wiem i nie mam pojęcia jak to zrobić ;/

thek.. No już wszystko rozgryzłem winksmiley.jpg kombinowałem jak koń pod górkę z tym a okazało się to banalne smile.gif Dzięki za wskazówkę winksmiley.jpg
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.