Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skalowanie zdjęć
Forum PHP.pl > Forum > Gotowe rozwiązania
irysek110
Witajcie!

Piszę aukcję internetową. Mam pewien problem...nie wiem jak poprawnie przeskalować zdjęcie, by nie zatraciło swoich proporcji. Bardzo zależałoby mi na tym, by zdjęcia, które umieszczą użytkownicy podczas prezentacji artykułów z bazy nz stronie wyglądały "tak jak należy".
Ma ktoś jakiś pomysłquestionmark.gif

Serdecznie dziękuję za wszelkie podpowiedzi.

Pozdrawiam

Irysek
dr_bonzo
To jest czysta matematyka:
* liczysz proporcje przed zmniejszeniem zdjecia (masz 400x300)
* wybierasz docelowa np. dluzsza krawedz 100
* proporcja wynosi 300/400 = 3/4
* krotsza bedzie miala dlugosc: 100 * 3/4 = 75.
mario
Proponuję najpierw użyć pola SZUKAJ na forum a później pisanie nowego posta o tym co już było x razy:

imagecreatefromjpeg - skalowanie
pliki BMP - skalowanie
skalowanie image bez pikselizacji questionmark.gif
Skalowanie obrazkow
skalowanie zdjec
miniatury zdjęć

imagecopyresized
  1. <?php
  2. // File and new size
  3. $filename = 'test.jpg';
  4. $percent = 0.5;
  5.  
  6. // Content type
  7. header('Content-type: image/jpeg');
  8.  
  9. // Get new sizes
  10. list($width, $height) = getimagesize($filename);
  11. $newwidth = $width * $percent;
  12. $newheight = $height * $percent;
  13.  
  14. // Load
  15. $thumb = imagecreate($newwidth, $newheight);
  16. $source = imagecreatefromjpeg($filename);
  17.  
  18. // Resize
  19. imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  20.  
  21. // Output
  22. imagejpeg($thumb);
  23. ?>

imagecopyresampled()
  1. <?php
  2. // The file
  3. $filename = 'test.jpg';
  4.  
  5. // Set a maximum height and width
  6. $width = 200;
  7. $height = 200;
  8.  
  9. // Content type
  10. header('Content-type: image/jpeg');
  11.  
  12. // Get new dimensions
  13. list($width_orig, $height_orig) = getimagesize($filename);
  14.  
  15. if ($width && ($width_orig < $height_orig)) {
  16.  $width = ($height / $height_orig) * $width_orig;
  17. } else {
  18.  $height = ($width / $width_orig) * $height_orig;
  19. }
  20.  
  21. // Resample
  22. $image_p = imagecreatetruecolor($width, $height);
  23. $image = imagecreatefromjpeg($filename);
  24. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
  25.  
  26. // Output
  27. imagejpeg($image_p, null, 100);
  28. ?>
irysek110
Mario!! Pojawił się jeszcze jeden problem...Nie wiem dlaczego. Po zastosowaniu pierwszego kodu, który mi poleciłeś na stronie pojawił się błąd:


Fatal error: Call to undefined function: imagecreate() in ..\skalowanie.php on line 27

Sprawdziłem inny skrypt i okazało się, że funkcja imagecreatetruecolor() też nie działa..:

Fatal error: Call to undefined function: imagecreatetruecolor() in ..\skalowanie2.php on line 27

Mam rozumieć, że moja wersja php (4.3.10) nie obsługuje tych funkcji?
A może należy przestawić coś w pliku php.ini ?

Będę bardzo wdzięczny za pomoc.

Irysek
Wave
Irysek zobacz komentarze do http://pl.php.net/imagecreate
mario
Cytat(irysek110 @ 2005-05-01 17:30:01)
Mario!! Pojawił się jeszcze jeden problem...Nie wiem dlaczego. Po zastosowaniu pierwszego kodu, który mi poleciłeś na stronie pojawił się błąd:


Fatal error: Call to undefined function: imagecreate() in ..\skalowanie.php on line 27

Sprawdziłem inny skrypt i okazało się, że funkcja imagecreatetruecolor() też nie działa..:

Musisz skompilować php z obsługą biblioteki graficznej PHP_GD.DLL Wszelkie operacje na plikach graficznych są obsługiwane dzięki funkcjom z tej biblioteki.

Generowanie dynamicznej grafiki możliwe jest w języku php przy użyciu funkcji zawartych choćby w bibliotece GD. Bibliotekę GD w wersji dla systemu Windows możemy ściągnąć stąd (160 KB), a posiada ona wsparcie dla następujących formatów graficznych: GIF, PNG, WBMP oraz JPEG.

Po rozpakowaniu zmieniamy nazwę pliku biblioteki z php_gd_gif.dll na php_gd.dll, kopiujemy ją do katalogu gdzie składujemy rozszerzenia dla php
(domyślnie katalog EXTENSIONS) oraz uaktualniamy plik konfiguracyjnym php (php.ini) dodając wpis o ładowaniu tejże biblioteki

extension=php_gd.dll.


Źródło: Biblioteka GD GIF dla Windows
irysek110
Dzięki Mario;) Ale i tak nie działa. Znalazłem bibliotekę php_gd2.dll, umieściłem gdzie trzeba, ale i tak nie działa. Nawet znalazłem w pliku php.ini ścieżkę, która definiuje miejsce składowania bibliotek ładowanych dynamicznie, ustawiłem jak trzeba i nic...
Chyba w takim razie przeinstaluję php z 4.3.10 na 5.0.4 choć nie wiem czy to coś da..zobaczymy....

Serdzecznie dziękuję za pomoc i jeśli Ci jeszcze coś przyjdzie do głowy to chętnie "posłucham".

Pozdrawiam

Irysek
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.