Я пытаюсь создать ресурс изображения GD из образа BMP, но мне не повезло.
Образ BMP был создан и сохранен в Photoshop. Я попробовал пару BMP, которые я нашел в Интернете, и они дали те же результаты.
getimagesize () сообщает мне, что изображение BMP имеет тип изображения IMAGETYPE_BMP (6) и тип MIME 'image / x-ms-bmp'.
Я попытался запустить изображение через imagecreatefromwbmp () и imagecreatefromxbm (), но не узнал его. Я также попробовал запустить его через imagecreatefromstring (), но это ошибочное высказывание «Данные не в распознанном формате».
Я запускаю XAMPP на компьютере с Windows с PHP 5.3.1 и GD 2.0.34 с поддержкой WBMP и XBM. Я также пробовал это на Linux-сервере под управлением PHP 5.2.6 и GD 2.0.34 с поддержкой WBMP и XBM, таким же результатом.
Любые идеи, как я могу создать ресурс изображения GD из этого BMP? Действительно ли это возможно?
Насколько мне известно, он не поддерживает изображения BMP. Метод imagecreatefromwbmp()
предназначен для работы с файлами растровых изображений (WBMP), а не с обычным BMP, который у вас там есть. imagecreatefromxbm()
предназначен для работы с форматом XBM (опять же, отличается от BMP).
Я бы обошел это, повторно открыв Photoshop и перезапустив его как PNG или JPG. Предполагая, что PHP установлен / скомпилирован с соответствующей поддержкой, вы сможете отлично работать с одним или обоими форматами изображений.
В Github есть новый проект с открытым исходным кодом, который позволяет читать и сохранять BMP-файлы (и другие форматы файлов) в PHP. Он довольно прост в использовании.
Проект называется PHP Image Magician .
Решение, которое вы ищете, находится здесь: http://tr.php.net/imagecreate
Прокрутите ниже, чтобы найти функцию с именем « ImageCreateFromBMP ». Это поможет вам создавать изображения из изображений BMP.
После создания изображения вы можете использовать функцию imagejpeg () для сохранения изображения в формате jpeg.
Кажется, мне давно известно, что GD не поддерживает формат BMP.
Вот ссылка, которую я только что нашел.
Несмотря на некоторую путаницу в файлах WBMP, это было давно.
Эта временная шкала от Delicious.com указывает, что это, вероятно, 2005 год.
функция использования:
function imagecreatefrombmp( $filename ) { $file = fopen( $filename, "rb" ); $read = fread( $file, 10 ); while( !feof( $file ) && $read != "" ) { $read .= fread( $file, 1024 ); } $temp = unpack( "H*", $read ); $hex = $temp[1]; $header = substr( $hex, 0, 104 ); $body = str_split( substr( $hex, 108 ), 6 ); if( substr( $header, 0, 4 ) == "424d" ) { $header = substr( $header, 4 ); // Remove some stuff? $header = substr( $header, 32 ); // Get the width $width = hexdec( substr( $header, 0, 2 ) ); // Remove some stuff? $header = substr( $header, 8 ); // Get the height $height = hexdec( substr( $header, 0, 2 ) ); unset( $header ); } $x = 0; $y = 1; $image = imagecreatetruecolor( $width, $height ); foreach( $body as $rgb ) { $r = hexdec( substr( $rgb, 4, 2 ) ); $g = hexdec( substr( $rgb, 2, 2 ) ); $b = hexdec( substr( $rgb, 0, 2 ) ); $color = imagecolorallocate( $image, $r, $g, $b ); imagesetpixel( $image, $x, $height-$y, $color ); $x++; if( $x >= $width ) { $x = 0; $y++; } } return $image; }
источник http://php.net/manual/ru/function.imagecreatefromwbmp.php