В библиотеке GD нет функции для генерации bmp-изображений, поэтому я написал ее сам. В этой функции также есть алгоритм сжатия, который я еще не написал, но этого достаточно. Студенты, которым это нужно, могут посмотреть.
int imagebmp (изображение ресурса [, строковое имя файла [, int $bit [, сжатие int]]] )
$im: ресурс изображения
$filename: Если вы хотите сохранить файл, укажите имя файла. Если оно пустое, оно будет выведено непосредственно в браузере.
$bit: качество изображения (1, 4, 8, 16, 24, 32 бита)
$compression: метод сжатия, 0 означает отсутствие сжатия, 1 использует для сжатия алгоритм сжатия RLE8.
Примечание. Для этой функции по-прежнему требуется поддержка библиотеки GD.
Демо:
$im = imagecreatefrompng("test.png");
изображениеbmp ($ IM);
imagedestroy ($ im);
Источник:
/**
* Создание изображений в формате BMP.
*
* @author: легенда( [email protected] )
* @ссылка: http://www.ugia.cn/?p=96
* @description: создать растровый файл с библиотекой GD
* @версия: 0.1
*
* @param ресурс $im ресурс изображения
* @param string $filename Если вы хотите сохранить в виде файла, укажите имя файла. Если оно пустое, оно будет выведено непосредственно в браузере.
* @param целое число $bit качество изображения (1, 4, 8, 16, 24, 32 бита)
* @param целое число $compression метод сжатия, 0 означает отсутствие сжатия, 1 использует алгоритм сжатия RLE8 для сжатия
*
* @return целое число
*/
функция imagebmp(&$im, $filename = '', $bit = 8, $compression = 0)
{
if (!in_array($bit, array(1, 4, 8, 16, 24, 32)))
{
$бит = 8;
}
иначе if ($bit == 32) // todo:32 бит
{
$бит = 24;
}
$bits = pow(2, $bit);
//Настраиваем цветовую палитру
imagetruecolortopalette($im, true, $bits);
$width = imagesx($im);
$height = imagesy($im);
$colors_num = imagecolorstotal($im);
если ($бит <= 8)
{
// индекс цвета
$rgb_quad = '';
for ($i = 0; $i <$colors_num; $i++)
{
$colors = imagecolorsforindex($im, $i);
$rgb_quad .= chr($colors['blue']) . chr($colors['green']) . chr($colors['red']) "