Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP] Operacje na plikach
Forum PHP.pl > Forum > Przedszkole
d0m1n1k_
Witam,

czy jest możliwe wykonanie następujących czynności przy przesyłaniu pliku na serwer:

1. Zmiana rozmiaru przy zachowaniu proporcji (nie mniej niż długość 246 i/lub wysokość 185)
2. Przycięcie obrazka do dokładnie wybranego rozmiaru (246x185px).

To o co mi chodzi, prezentuje poniższy obrazek:



Byłbym bardzo wdzięczny za pomoc.
Crozin
Tak, jest to możliwe.
d0m1n1k_
Mój błąd, Crozin, wiem, że jest możliwe, ale jak to zrobić dobrze.

Obecnie korzystam z następującego rozwiązania:

  1. $imgSrc = "image.jpg";
  2. list($width, $height) = getimagesize($imgSrc);
  3. $myImage = imagecreatefromjpeg($imgSrc);
  4.  
  5. if ($width > $height) { $y = 0; $x = ($width - $height) / 2; $smallestSide = $height; }
  6. else { $x = 0; $y = ($height - $width) / 2; $smallestSide = $width; }
  7.  
  8. $thumbSizeW = 246;
  9. $thumbSizeH = 185;
  10. $thumb = imagecreatetruecolor($thumbSizeW, $thumbSizeH);
  11. imagecopyresampled($thumb, $myImage, 0, 0, $x, $y, $thumbSizeW, $thumbSizeH, $smallestSide, $smallestSide);
  12.  
  13. header('Content-type: image/jpeg');
  14. imagejpeg($thumb);


Ale,
po pierwsze: Zamiast skalować i przyciąć go, wykonuje skalowanie i zmienia proporcje obrazka,
po drugie: nie wiem jak wsadzić to do pętli while php/mysql aby działało poprawnie - wywala jedynie giga błąd i zamiast ścieżki do pliku (czy samej nazwy pliku) wywala plik php lub jakieś "resource id#2".

Czy teraz, mógłby mi ktoś pomóc sad.gif
Turson
Polecam bibliotekę WideImage - podajesz max szerokości i max wysokość a samo zeskaluje.
d0m1n1k_
W sumie nie myślałem nawet, że są gotowe DARMOWE komponenty tego typu.
Bardzo dziękuję @Turson za pomoc!
Jak któregoś pięknego dnia, będzie mi dane przywędrować w okolice Łodzi to Cię kulturalnie "zaspamuje" nieodmawialnym zaproszeniem na dobrego Cognac'a z ramach podziękowania.

@Turson, próbuję wykorzystać tą bibliotekę ale nie działa :-///////
Nie wiem jak to wykorzystać. Staram się jak mogę ale widać jest to ponad moje umiejętności :-(
nospor
Naucz sie w koncu, że:
- nie pisze sie "niedziala" bo czort wie co masz pod tym na mysli. Skrypt moze "niedzialac" na wiele sposobow. Masz napisac konkretnie co jest źle itp.
- nalezy podawac kod, na ktorym operujesz.

To naprawde takie trudne ogarnąc te dwie rzeczy? Trzeba za kazdym razem kazdemu z osobna o tym pisac?
d0m1n1k_
Cytat(nospor @ 16.10.2014, 13:42:39 ) *
Skrypt moze "niedzialac" na wiele sposobow. Masz napisac konkretnie co jest źle itp.


Nie działa BO NIE OGARNIAM JEGO STRUKTURY! Nie umiem go wykorzystać.
Siedzę w dziale przedszkole nie dlatego, że tak mi wygodnie, a jedynie przez to, że nadal wiem, że moje problemy są z cyklu żłobek / raczkowanie.

Cytat(nospor @ 16.10.2014, 13:42:39 ) *
nalezy podawac kod, na ktorym operujesz.


Gdy tylko mam problem który jest już opisany - przykładowo - kodem który napisałem lub wykorzystałem to go podaję.
Tu tego niema, bo nie wiem gdzie to cholerstwo ma przód a gdzie tył.
Trudno zauważyć, że dla mnie to jest nowy wyższy poziom jazdy?
Gdyby czuł się wyluzowany jak sanki w lecie to myślisz, że bym musiał prosić obcych, przychylnych mniej lub bardziej ludzi o pomoc?
Raczej nie.

Cytat(nospor @ 16.10.2014, 13:42:39 ) *
To naprawde takie trudne ogarnąc te dwie rzeczy? Trzeba za kazdym razem kazdemu z osobna o tym pisac?


@nospor - zobacz na moje posty, jeśli pytam, to zazwyczaj opisuję wszystko kodem.
Jeśli mogę: Wyluzuj, bo nie warto się wkurzać na takie głupstwa.
Lepiej - i to piszę również w mojej sprawie - dać ban na tydzień. Kto się będzie miał nauczyć ten się nauczy, a reszta będzie pisała jeden post na tydzień.
nospor
Cytat
Nie działa BO NIE OGARNIAM JEGO STRUKTURY! Nie umiem go wykorzystać.
No i oto wlasnie chodzi bys to napisal. Napisales "nie dziala" i skad mamy wiedziec o co ci chodzi?! "Nie dziala" sugeruje, ze cos napisales, ale nie dziala. Zas z teraz z posta co naskrobales wynika, ze w ogole nic nie napisales. A to roznica i to zasadnicza. Pamietaj, ze to forum programistyczne a nie wrozbiarskie. Jak oczekujesz pomocy to sie wyrazaj konkretnie. Jak nie wiesz, jak cos uzyc, to pisz, ze nie wiesz jak uzyc, a nie ze nie dziala. To dwa rozne pojęcia.
Turson
  1. require_once 'path/to/WideImage.php';
  2. WideImage::load('big.png')->resize(50, 30)->saveToFile('small.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.