Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z kadroaniem zdjęcia
Forum PHP.pl > Forum > PHP
dzioman
witam
mam sobie taki kodzik co robi kwadratową miniaturkę z dużego zdjęcia , Mój problem jest taki że chciałbym zrobić miniaturkę ale wykadrowaną zawsze ze środka dużego zdjęcia a nie jak teraz robi z lewego górnego rogu. Strasznie to era wygląda jak zrobi ię miniaturkę z bardzo szerokiego zdjęcia ;(

Bardo bym prosił o pomoc - z góry dziękuję

A oto kodzik
  1. <?
  2. $plik ="projekt.jpg";
  3.  
  4. $org = imagecreatefromjpeg($plik);
  5. $s_org = imagesx($org);
  6. $w_org = imagesy($org);
  7.  
  8. print $s_org; 
  9.  
  10. $s_min = 60;
  11. $w_min = 60;
  12.  
  13.  
  14. $min = @imagecreatetruecolor($s_min, $w_min); 
  15.  
  16. if($s_org>$w_org)
  17. { 
  18. $s_org=$w_org; }
  19. elseif ($s_org<$w_org)
  20. { 
  21. $s_org=$w_org; }
  22.  
  23. imagecopyresampled($min, $org, 0, 0, 0, 0, $s_min, $w_min, $s_org, $w_org); 
  24. imagedestroy($org); 
  25. imagejpeg($min, 'mini_projekt.jpg', 90); 
  26. imagedestroy($min); 
  27. ?>


poprawiam
---
nospor
chomiczek
Może się myle, ale: w manualu imagecopyresampled jest napisane:
Cytat
Description
bool imagecopyresampled ( resource dst_image, resource src_image, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h )


zwróc uwage w szczególności na int dst_x, int dst_y oraz int src_x, int src_y

wystarczy, że pobierzesz rozmiar zdjęcia i na środku ustawisz kadrowanie
a79rtur
najpierw skaluje do rozmiarow podanych a pozniej w razie potrzeby przycina
  1. <?
  2. $wsp_skali=(isset($_GET['wsp_skali']))?($_GET['wsp_skali']):(10);
  3. $min_max_szer=(isset($_GET['max_szer']))?($_GET['max_szer']):(100);
  4. $min_max_wys=(isset($_GET['max_wys']))?($_GET['max_wys']):(100);
  5. $plik=$_GET['plik'];
  6.  
  7.  
  8. list($obrazek_szer, $obrazek_wys, $typ, $attr)=getimagesize($plik);
  9.  
  10. if($typ==2) $obrazek = ImageCreateFromJPEG($plik);
  11. else if($typ==1)  $obrazek = ImageCreateFromGIF($plik);
  12. else if($typ==3)  $obrazek = ImageCreateFromPNG($plik);
  13.  
  14. //skaluj mniejsze
  15. $skaluj_do=($obrazek_szer<=$obrazek_wys)?('szer'):('wys');
  16.  
  17. if($skaluj_do=='wys') //jesli wymiary obrazka sa wieksze od rozmiarów miniaturki
  18. {//wysokosc mniejsza, skaluj do niej
  19.  
  20. $min_wys=$min_max_wys; //wysokosc 100
  21. $wsp=$min_max_wys/$obrazek_wys;
  22. $min_szer=ceil($wsp*$obrazek_szer);
  23.  
  24. } else {
  25.  
  26. $min_szer=$min_max_szer; //wysokosc 100
  27. $wsp=$min_max_szer/$obrazek_szer;
  28. $min_wys=ceil($wsp*$obrazek_wys);
  29. }
  30.  
  31. $miniaturka=@ImageCreateTrueColor($min_szer,$min_wys);
  32. @ImageCopyResampled($miniaturka, $obrazek, 0, 0, 0, 0, $min_szer, $min_wys, $obrazek_szer, $obrazek_wys);
  33.  
  34. if($min_szer>$min_max_szer) //szer miniaturki wieksza od maksymalnej dopuszczalnej
  35. {
  36. $wspx=round(($min_szer-$min_max_szer)/2);
  37. }
  38. if($min_wys>$max_wys)
  39. {
  40. $wspy=round(($min_wys-$min_max_wys)/2);
  41. }
  42. //wspx,wspy to lewy gorny rog wycinka 
  43.  
  44. if($min_wys<$min_max_wys) $min_max_wys=$min_wys;
  45. if($min_szer<$min_max_szer) $min_max_szer=$min_szer;
  46.  
  47.  
  48. $miniaturka2=@ImageCreateTrueColor($min_max_szer,$min_max_wys);
  49. if(@ImageCopy($miniaturka2, $miniaturka, 0, 0 , $wspx, $wspy, $min_max_szer, $min_max_wys));
  50. {
  51. Header('Content-type: image/jpg');
  52. ImageJPEG($miniaturka2,'',70);
  53. }
  54.  
  55. ImageDestroy($miniaturka);
  56. ImageDestroy($miniaturka2);
  57. ImageDestroy($obrazek_max);
  58. ?>
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.