-
Gallery2 i polski EXIF
dodano 24.09.2007 / komentarzy: 0 / autor: palmiak
W pracy dostałem za zadania przygotowanie galerii dla pewnej gazety. Galeria, jak galeria. Chcieli mieć możliwość dodawania zdjęć, rejestracji użytkowników etc etc oraz pobierania słów kluczowych z odpowiedniego pola EXIF. Wybór padł na skrypt Gallery2. I wszystko szło dobrze dopóki w polach EXIF nie było polskich znaków.Na początku sobie pomyśłałem, że może cały prooblem polega na programie w którym EXIFy były dodane. Jednak i Photoshop i InfranView zachowywały się w ten sam sposób (linuxowe alternatywy też nic nie pomogły). Czyli jak łatwo się teraz domyslić, winne było kodowanie znaków w EXIFie.
Logiczne było więc, że trzeba odnaleźć w skrypcie moment w którym wyciągane są ze zdjęcia pola EXIF i przekodować na ISO (bo skrypt sam w sobie po pobraniu pół przekodowywuje ISO na UTF-8, nie pomyślano jednak, że można użyć formatu innego niż ISO, co akurat tutaj zaszło).
Tym sposobem otwieramy katalog modules/exif/classes/ i zabieramy się za edycję pliku ExifHelper.class. Szukamy fragmentu:
if (is_array($result)) {
$result = implode(‘; ‘, $result);
}
$result = GalleryCoreApi::convertToUtf8($result, $sourceEncoding);
return $result;
}I dopisujemy linijkę, która nam przekonwertuje wszystko na ISO:
if (is_array($result)) {
$result = implode(‘; ‘, $result);
}
$result = strtr($result,"\xA5\x8C\x8F\xB9\x9C\x9F","\xA1\xA6\xAC\xB1\xB6\xBC"); # Win2iso
$result = GalleryCoreApi::convertToUtf8($result, $sourceEncoding);
return $result;
}Dzięki temu nie powinniśmy mieć już więcej problemów z polskimi znakami w danych pobranych z pól EXIF.


















Napisz komentarz