Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmniejszanie wartości DPI przy tworzeniu miniaturki
Forum PHP.pl > Forum > PHP
marcinek37
Witam,

Parametry zdjęcia (informacje po wejściu w zaawansowane właściwości zdjęcia):
Szerokość zdjęcia = 3872px
Wysokość zdjęcia = 2176px
Rozdzielczość w poziomie = 350dpi
Rozdzielczość w pionie = 350dpi

następnie uruchamiam skrypt, który przerabia to zdjęcie:
Kod
<?
$src = 'obraz.jpg';
$img = @imagecreatefromjpeg($src);
$old_x = imagesx($img);
$old_y = imagesy($img);
$new_x = 200;
$new_y = 200;
// wartości są przykładowe, wiem, że zdjęcie traci proporjnalność

$img_new = @imagecreatetruecolor($new_x, $new_y);
@imagecopyresampled($img_new, $img, 0, 0, 0, 0, $new_x, $new_y, $old_x, $old_y);
@imagejpeg($img_new, $src, 85);
imagedestroy($img);
?>



Po zakończonej akcji zdjęcie ma parametry:
Szerokość zdjęcia = 200px DOBRZE
Wysokość zdjęcia = 200px DOBRZE
Rozdzielczość w poziomie = 96dpi ŹLE
Rozdzielczość w pionie = 96dpi ŹLE

Wszystko poszło dobrze, ale stopień dpi drastycznie spadł, obniżając jakość zdjęcia.
Czy istnieje prosta możliwość (użycie jakieś funkcji lub zmiana ustawień w php.ini), która nie będzie zmieniać wysokości dpi? Nie chcę jej narzucać z góry, po prostu chcę, aby się nie zmieniała.

Warto dodać, że jak taką akcję wykonuję w Photoshopie, wszystko działa dobrze.

Proszę o pomoc.
phpion
Proszę o nadanie sensowniejszego tematu wątkowi. W przeciwnym razie może zostać on zamknięty.
cycofiasz
Dpi nie określa jakości tylko wymiary zdjęcia podczas drukowania. Czy obrazek wynikowy ma być przeznaczony do wydruku?
marcinek37
Zdjęcie trafia do internetu, a potem je ktoś pobiera i co z nim zrobi, nie wiem - więc pewnie będzie również drukować

czy jest możliwość przerobienia tego kodu tak, aby DPI w ogóle nie ulegała zmianie?
np. podczas przeróbki w Photoshopie DPI w ogóle nie ulega zmianie...
melkorm
Cytat
obniżając jakość zdjęcia.


imagejpeg - trzeci parametr.
marcinek37
Trzeci parament można ustawić na 100, i tak to nic nie zmienia, podobno nie warto dawać więcej niż 85
mnie chodzi tylko o dpi
kiler129
Ale DPI to tylko informacja smile.gif
Można ją zmienić nawet na 10000 we właściwościach a i tak jakość pliku się nie zmieni. To jest informacja która pozwala wyliczyć realną wielkość obrazu (bo pixele nijak mają się do milimetrów).
Poszukaj jak w GD2 zmienić DPI - wiem, że się da ale nie pamiętam jak wink.gif

Tak czy inaczej - to tylko zapis jak EXIF - nie wpływa na jakość.
marcinek37
KILLERZE, a mógłbyś podać mi linka do strony, gdzie znajdę dokładny opis tego, że wartość dpi nie ma ogólnie znaczenia? że nie psuje jakości zdjęcia?
Rid
Cytat
Można ją zmienić nawet na 10000 we właściwościach a i tak jakość pliku się nie zmieni


No ja bym się nad tym zastanowił:
http://pl.wikipedia.org/wiki/Dpi
Są tam fajnie przedstawione obrazki,na których widać ,że wartość DPI ma znaczenie co do jakości obrazu.
cycofiasz
Jeśli mamy do czynienia ze stałą wartością wymiarów obrazka w pikselach to wartość dpi nie ma znaczenia dla jego jakości. Im większa wartość dpi tym drukowany obrazek będzie zatem coraz mniejszy.
marcinek37
możecie dać mi jakieś lepsze źródła niż wikipedia?
chciałbym to raz na zawsze pojąć, bo mam niemały problem...
cycofiasz
O lepsze źródło trudno do tak prostej rzeczy.

Masz tu obrazek 72 dpi: http://virtualsale.pl/1.jpg
A tutaj obrazek o tej samej rozdzielczości, ustawione 300 dpi http://virtualsale.pl/2.jpg

Dla tego drugiego ustawiłem mocniejszą kompresję by pokazać że dpi nie oznacza w tym przypadku jakości.


W formacie jpeg / png / gif itp zapisuje się grafikę rastrową a więc podzieloną na piksele. Mniejszej jednostki niż piksel nie ma. Więc mając 2 zdjęcia o tej samej rozdzielczości (np 200 x 200 px) ale o innym współczynniku dpi nie ma żadnej różnicy w ich jakości. Dpi to jest tylko liczba doklejona do informacji o zdjęciu (podobnie jak autor, program edytujący itp). Użyteczna jest praktycznie tylko przy drukowaniu by drukarka wiedziała jakich wymiarów ma wyjść zdjęcie na papierze. Może być tak że obrazek o rozdzielczości 5000 x 5000 px wydrukowany zostanie jako kwadrat o boku 2cm a na przykład inny obrazek 500 x 500px (o mniejszym dpi) wyjdzie jako kwadrat o boku 6cm.
kiler129
Innymi słowy DPI oznacza Dots-Per-Inch czyli ilość pixeli na cal. Jako, że każdy z nas ma inny rozmiar monitora (a rozdzielczość możemy mieć tą samą) to obrazek 100x100px będzie u każdego z nas innego rozmiaru.
W internecie nie ma problemu ale przy wydrkuku już tak - maszyna drukująca dostaje obrazek 100x100 pixeli ale ona nie ma jakby fabrycznej rozdzielczości - trudno to wytłumaczyć smile.gif
Stąd ktoś wpadł na pomysł aby przy cyfrowych zdjęciach zapisywać dodatkowo w metadanych parametr DPI mówiący że 1 cal^2 na papierze to wycinek np. 10x10 pixeli - dzięki temu drukarka wie jakiego rozmiaru ma być zdjęcie. Stąd np. aparaty zapisują różne DPI bo robiąc zdjęcie nie wiesz jakiej wielkości odbitka ma być.
Stąd jeśli obraz przeznaczony jest do projekcji cyfrowej zazwyczaj nie dba się o DPI (wyjątkiem jest tu PDF który pozwala pokazywać realną wielkość obrazu na ekranie). W wydruku obrazka każdy może sobie ustawić wymiary i wtedy program drukujący liczy odpowiednie DPI. Wyjątkiem znowu jest PDF który zachowuje skale odwzorowania i przy ustawieniu durku na 100% możemy być pewni że obraz będzie drukowany z jego DPI (dlatego wzory matryc światłoczułych często wymienia się zwyczajnie w PDF a nie JPG).

Podsumowując - DPI nie ma wpływu na jakość tego co widzimy, conajwyżej sugeruje jaka ta jakość być powinna na papierze.
marcinek37
jesteście super - teraz to już pojąłem!

ale mimo wszystko, lepiej, aby dpi nie ulegało zmianie po wysłaniu na serwer - jest jakaś sztuczka, aby tego uniknąć?
trudno prosić internautów, aby przed wydrukiem duużej fotki mieli sobie zmieniać dpi
kiler129
Ale DPI to tylko SUGESTIA dla programu w jakim realnym, papierowym rozmiarze ma być zdjęcie. Przy zdjęciach DPI może być dowolne bo przecież aparat robiąc zdjęcie nie ocenia jakiej wielkości jest.
Musisz poszukać w manualu GD2 - nie jest to często używana własnosć wink.gif
marcinek37
aha, czyli krótko mówiąc nie mam się tym w ogóle przejmować
dziękuję za pomoc
pozdrawiam!
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.