Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][Java][PHP]Rzeczywista wielkość obrazka
Forum PHP.pl > Forum > Przedszkole
Kao
Witam
Szukam rozwiązania problemu pobrania rzeczywistej wielkości obrazka/ów tzn.: jego/ich wymiarów w mm (bądź w cm) oraz jego/ich DPI
Nie będzie to skrypt umieszczany w sieci, a tylko odpalany na INTRANECIE, lokalnie. (mam jakiś tam serwer NAS z apachem, PHP, mysql)

Np. dla PHP
Ładuje do katalogu skrypt w pliku index.php
Katalog ma np. 20 obrazków.
wpisuje lokalnie w przeglądarce link do lokacji index.php
a skrypt generuje np:
ala_makota.jpg - 200 x 220mm - 300 dpi
kot_ma_ale.jpg - 220 x 320mm - 150 dpi
... itd.

generowanie zrobię sobie sam, ale nie mogę poradzić sobie z pobraniem wielkość w mm (pica najszybciej pobrać exif_read_data) i faktycznej DPI, chyba że się nie da w PHP?

Jeśli się nie da w PHP to może w jQuery albo java? każde rozwiązanie będzie mile widziane.

Jedna uwaga: obrazki mogą być sporej wielkości tzn. od 300 kb do 12 MB

EDIT1: jedno chyba znalazłem -> PICA na mm -> PICA*0.423333333 = MM

Z góry dziękuję
Pozdr.
erix
A nie lepiej by było wywołać
Kod
identify -verbose info: <image>]

z pakietu ImageMagick?
Kao
Google nie zawsze jest takie szczodre w odpowiedziach (bo mam kilka pytań snitch.gif), ale dziś troszkę poszukałem i oto super szybka metoda:

PHP:

  1. $exif['COMPUTED']['Height']*0.423333333 // wysokość w mm
  2. $exif['COMPUTED']['Width']*0.423333333 // szerokość w mm


i pobieranie DPI:
  1. function get_dpi($filename){
  2.  
  3. // open the file and read first 20 bytes.
  4. $a = fopen($filename,'r');
  5. $string = fread($a,20);
  6. fclose($a);
  7.  
  8. // get the value of byte 14th up to 18th
  9. $data = bin2hex(substr($string,14,4));
  10. $x = substr($data,0,4);
  11. $y = substr($data,4,4);
  12. return array(hexdec($x),hexdec($y));
  13.  
  14. }


Może komuś się przyda ... jak zrobię gotowy skrypt z użyciem tego to wrzucę.

Pozdr.

Temat do zamknięcia.

EDIT: 1
Troszkę w błąd wprowadziłem z tym podaniem rzeczywistej wielkości obrazka.
Powinno być:
wzór === (pixele / dpi ) * 2.54

ewentualnie zaokrąglić to do dwóch miejsc po przecinku:

  1. round((($exif['COMPUTED']['Height'])/hexdec($x)*2.54),2);
  2. round((($exif['COMPUTED']['Width'])/hexdec($y)*2.54),2);



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