Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PHP PECL Imagick -> Walidacja obrazka
mstraczkowski
post 14.02.2013, 22:30:52
Post #1





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


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

Ten post edytował mstraczkowski 14.02.2013, 22:40:07


--------------------
Jeżeli moja wypowiedź Ci pomogła użyj przycisku
Go to the top of the page
+Quote Post
ano
post 15.02.2013, 12:12:08
Post #2





Grupa: Zarejestrowani
Postów: 435
Pomógł: 40
Dołączył: 16.02.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Czy ten txt na 100% nie jest obrazkiem? ;-)


--------------------
Linkedin | ...
Go to the top of the page
+Quote Post
mstraczkowski
post 25.02.2013, 16:00:16
Post #3





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


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.

Ten post edytował mstraczkowski 25.02.2013, 16:00:32


--------------------
Jeżeli moja wypowiedź Ci pomogła użyj przycisku
Go to the top of the page
+Quote Post
quality
post 7.03.2013, 12:09:16
Post #4





Grupa: Zarejestrowani
Postów: 172
Pomógł: 9
Dołączył: 13.02.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Byc moze chodzi o zapis binarny obrazka w pliku txt. Wiec defacto z takiego pliku obrazek mozna wygenerowac smile.gif

Ten post edytował quality 7.03.2013, 12:10:08


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 16:01