Если необходимо получить доступ к содержимому картинки, созданной в PHP с помощью функций GD, то можно сохранить её на диск и получить содержимое с помощью функций file_get_contents или fread.
Но можно и не сохранять. Можно вывести содержимое во внутренний буфер и скопировать его в строковую переменную с помощью функции ob_get_contents().
<?php ob_start(); imagejpeg($image, null, 100); $imageStringData = ob_get_contents(); ob_end_clean(); imagedestroy($image); ?>
Далее можно преобразовать полученные данные в шестнадцатеричное представление с помощью bin2hex() и произвести поиск с помощью strpos(). Например, чтобы найти маркер конца файла, надо передать функции strpos() в качестве искомой строки код маркера в шестнадцатеричном представлении (в нашем случае - 'ffd9').
С помощью регулярных выражений можно искать прямо в двоичных данных. Маркер конца файла можно найти так:
<?php preg_match_all('/\xFF\xD9/', $image, $matches, PREG_OFFSET_CAPTURE); ?>
После того как все необходимые манипуляции с содержимым произведены, изображение можно привести к двоичному представлению и, например, отдать браузеру:
<?php $imageBin = pack('H*', $imageHex); header('Content-Type: image/jpeg'); echo $imageBin; ?>
Для версии PHP 5.4.0 и выше можно вместо функции pack использовать hex2bin.
Комментариев нет:
Отправить комментарий