Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dopasowanie skalownia png
Forum PHP.pl > Forum > PHP
pecik
Hey, jak zrobic dopasowanie skalowanie obrazka do kształtu kwadratu?
Mam stworzyć moduły gd dla

if(!empty($w) && empty($h)){//obliczanie h - wysokosi

}
if (empty($w) && !empty($h)) {//obliczanie w- szrokosci

}

prosze o pomoc
erix
Cytat
jak zrobic dopasowanie skalowanie obrazka do kształtu kwadratu?

No ciężko będzie, bo mało który obrazek jest kwadratowy. Najlepiej byłoby tu zrobić kadrowanie do kwadratu. Pobierasz mniejszy wymiar i drugi kadrujesz tak samo (do tej mniejszej wartości).

PS. Przenoszę.
kwiateusz
A żeś przeniósł :] powinienem Ci za to warna dać...

Przenosze
pecik
Ok, a jak chce dopasować wysokość do nowej zadanej wysokości. bez przycinania?
erix
No to sobie wyliczasz proporcje szerokości do wysokości i otrzymany ułamek mnożysz przez wysokość. winksmiley.jpg
Fifi209
Dam Ci kawałek mojego kodu, który kiedyś napisałem dla własnych potrzeb. Znajdziesz to czego potrzebujesz.

  1. $image = imagecreatefrompng($_FILES['file']['tmp_name']);
  2. $width = imagesx($image);
  3. $height = imagesy($image);
  4.  
  5. if ($width > 100 && $height > 100) {
  6.  
  7. if ($width > 700 || $height > 600) {
  8. $img = imagecreatetruecolor(700, 600);
  9. imagecopyresampled($img, $image, 0, 0, 0, 0, 700, 600, $width, $height);
  10. }else{
  11. $img = $image;
  12. }
  13.  
  14. $img_mini = imagecreatetruecolor(100, 100);
  15. imagecopyresampled($img_mini, $image, 0, 0, 0, 0, 100 , 100, $width , $height);
  16.  
  17. imagepng($img_mini, 'galeria/'.$_POST['serv'].'/mini/'.md5($_FILES['file']['name'].time()).'.png');
  18. imagepng($img, 'galeria/'.$_POST['serv'].'/'.md5($_FILES['file']['name'].time()).'.png');
  19. imagedestroy($img_mini);
  20. imagedestroy($image);
  21. if ($width > 700 || $height > 600) {
  22. imagedestroy($img);
  23. }
wookieb
Aby wyciąć kwadrat należy
1) Sprowadzić wielkość obrazka do rozmiarów minimalnych czyli np
Mamy obrazek o rozmiarze np 200 x 400 a ty chcesz wyciac kwadrat o rozmiarach 50 x 50
Zmniejszamy zdjecie do rozmiaru 50x100 ( tak aby obrazek nie byl mniejszy niz 50 x 50)
2) Wycinasz z fotki środek


Obrazowy przykład:
thek
Jest jeszcze jedne rozwiązanie. Skalujesz wyższą wartość sobie do boku kwadratu. Drugą proporcjonalnie. Po obu stronach mniejszej "dokładasz" przezroczystą przestrzeń.
Lub spojrzeniem "na odwrót"... Robisz przezroczysty kwadrat i w wyliczony fragment wklejasz przeskalowany obraz png smile.gif
Posługując się obrazkiem i danymi wookieb...
Mamy plik png 200x400. Mamy mieć 50x50 ( czy jakiej tam chcesz wielkości ). Skalujemy 200x400 do 50x50. Większy 400 to 400:50=8 200:8=25. Po skalowaniu więc będzie 25x50. Skoro mamy całość to musimy wiedzieć gdzie to "pchnąć" (50-25)/2=25/2 =12.5 co zaokrąglimy do 13. A więc ostatecznie przepychamy do całkowicie przezroczystego pliku 50x50 plik 25x50 we współrzędne 13,0 funkcją imagecopyresampled smile.gif W odpowiednie parametry funkcji imagecopyresampled więc dajesz 25, 50, 13 i 0.
pecik
o dzieki cos pokombinuje ;-)
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.