Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP PECL Imagick -> Walidacja obrazka
Forum PHP.pl > Forum > PHP > Object-oriented programming
mstraczkowski
Witam

Niedawno przeprowadzałem testy jednostkowe swojej biblioteki do manipulacji obrazkami opartej na dwóch sterownikach GD / Imagick.
Sprawdzałem jak zachowa się klasa kiedy będziemy starać utworzyć się jej obiekt podając ścieżkę do pliku, który nie jest obrazkiem.

Jako testowy plik wybrałem sobie plik tekstowy *.txt, sterownik GD, rzucił mi prawidłowo wyjątek, natomiast sterownik Imagick przepuścił plik *.txt

Poniżej podaję przykład, jak używany jest Imagick:
  1. try {
  2. $oImage = new \Imagick($this->sPath);
  3. }
  4. catch(\Exception $e) {
  5. throw new \Exception('File is not an image');
  6. }
  7. if (!$oImage->valid()) {
  8. throw new \Exception('File is not an image');
  9. }
  10. $aImage = $oImage->getImageGeometry();
  11. $this->iWidth = (int)$aImage['width'];
  12. $this->iHeight = (int)$aImage['height'];


Po podaniu pliku tekstowego otrzymuję obiekt:
  1. MyImagick Object
  2. (
  3. [sPath] => /var/www/Tests/System/Libraries/Image/Drivers/phpunit.txt
  4. [iWidth] => 612
  5. [iHeight] => 792
  6. )


What da ..? Ja rozumiem jeszcze jakoś przepuścić *.txt, ale jeszcze określić jego wymiary 612x792 ?

Chodzi mi o szybkie ustalenie czy plik jest poprawnym obrazkiem (za pomocą Imagick)
Nie chcę tutaj sprawdzać pierwszych bajtów pliku (magic numbers), ani żadnych dogłębnych analiz, bo od tego mam osobną klasę reguły walidacyjnej.
W sterowniku GD sprawdza się getimagesize, jednak w sterowniku Imagick go nie użyję bo to bez sensu i nie będę mieszać dwóch pakietów ze sobą.
ano
Czy ten txt na 100% nie jest obrazkiem? ;-)
mstraczkowski
Na 100%, jest tworzony przez skrypt przed rozpoczęciem testu jednostkowego, o treści "phpunit"

Coś musi być na rzeczy z *.txt (tylko nie widzę nigdzie wyjaśnienia, ani logiki) lub to po prostu bug, ponieważ przykładowo *.exe o tej samej treści rzuca już wyjątek:

Cytat
Fatal error: Uncaught exception 'ImagickException' with message 'no decode delegate for this image format `/var/www/phpunit.exe'


@Edit

Znalazłem przynajmniej potwierdzenie, że faktycznie tak jest

http://www.imagemagick.org/script/formats.php

Tutaj jest lista wspieranych formatów, m.in znajduje się tutaj TXT.
quality
Byc moze chodzi o zapis binarny obrazka w pliku txt. Wiec defacto z takiego pliku obrazek mozna wygenerowac smile.gif
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.