在php中创建1位位图(单色)

我正在寻找从这个内容的字符串中写入1位位图的可能性:

$str = "001011000111110000";

零是白色,一个是黑色。 BMP文件将是18 x 1像素。

我不想要一个24位BMP,而是一个真正的1位BMP。

有谁知道PHP中的标题和转换方法吗?


这是一个奇怪的要求:)

所以,你想在这里使用的是一个开始的php-gd。 一般情况下,这是包括在任何操作系统上安装PHP的体面回购,但只是因为它不适合你,你可以在这里得到安装说明;

http://www.php.net/manual/en/image.setup.php

首先,我们需要弄清楚图像的宽度需要多大; 高度显然永远是一个。

所以;

$str = $_GET['str'];
$img_width = strlen($str);

strlen会告诉我们$ str字符串中有多少个字符,并且由于我们给每个字符一个像素,所以字符数量会给我们所需的宽度。

为了便于访问,将字符串拆分为一个数组 - 每个单独的像素的每个元素。

$color_array = str_split($str);

现在,让我们设置一个“指针”,我们正在绘制哪个像素。 这是PHP,所以你不需要这个,但它很好整洁。

$current_px = (int) 0;

现在您可以初始化GD并开始制作图像;

$im = imagecreatetruecolor($img_width, 1);
// Initialise colours;
$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);
// Now, start running through the array
foreach ($color_array as $y)
{
  if ($y == 1)
  {
    imagesetpixel ( $im, $current_px , 1 , $black );
  }
  $current_px++; // Don't need to "draw" a white pixel for 0. Just draw nothing and add to the counter.
}

这会画出你的图像,然后你需要做的就是显示它;

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);

请注意,根本不需要$ white声明 - 我只是将它留给了您,让您了解如何使用gd声明不同的颜色。

在使用之前,您可能需要稍微调试一下 - 从使用GD开始已经很长时间了。 无论如何,希望这有助于!


这不是一个奇怪的要求。

我完全同意问题的目的,实际上我必须管理一些1位单色图像。

答案是:

  • GD在PHP网站上没有很好的记录。
  • 当你想从头开始创建一个图像时,你必须使用imagecreate()imagecreatetruecolor()
  • 似乎这两种刚刚提到的方法(函数)都无法从头开始创建1位图像。
  • 我通过创建一个外部图像,1bit单色png,用imagecreatefrompng()加载它来解决。
  • 另外:我刚刚从hereOfficial Bitbucket Repository下载了官方库的开源代码

    我在gd.h找到了什么?

    上面提到的功能的定义:

    /* Functions to manipulate images. */
    
    /* Creates a palette-based image (up to 256 colors). */
    BGD_DECLARE(gdImagePtr) gdImageCreate (int sx, int sy);
    
    /* An alternate name for the above (2.0). */
     #define gdImageCreatePalette gdImageCreate
    
    /* Creates a truecolor image (millions of colors). */
    BGD_DECLARE(gdImagePtr) gdImageCreateTrueColor (int sx, int sy);
    

    所以“官方”解决方案是:使用imagecreate() (包装gdImageCreate() GD函数)创建2个调色板图像。

    “替代”解决方案是创建一个外部图像,1位单色PNG,它与imagecreatefrompng()如上所述。

    链接地址: http://www.djcxy.com/p/10893.html

    上一篇: Create 1 bit bitmap (monochrome) in php

    下一篇: unable to build: the file dx.jar was not loaded from the SDK folder