精华内容
下载资源
问答
  • I need to create a black and white BMP file with pure Python.I read an article on wikipedia, BMP file format, but I am not good at low level programming and want to fill this gap in my knowledge.So th...

    I need to create a black and white BMP file with pure Python.

    I read an article on wikipedia, BMP file format, but I am not good at low level programming and want to fill this gap in my knowledge.

    So the question is, how do I create a black and white BMP file having a matrix of pixels? I need to do this with pure Python, not using any modules like PIL. It is just for my education.

    解决方案

    This is a complete answer for monochrome bitmaps.

    import math, struct

    mult4 = lambda n: int(math.ceil(n/4))*4

    mult8 = lambda n: int(math.ceil(n/8))*8

    lh = lambda n: struct.pack("

    li = lambda n: struct.pack("

    def bmp(rows, w):

    h, wB = len(rows), int(mult8(w)/8)

    s, pad = li(mult4(wB)*h+0x20), [0]*(mult4(wB)-wB)

    s = li(mult4(w)*h+0x20)

    return (b"BM" + s + b"\x00\x00\x00\x00\x20\x00\x00\x00\x0C\x00\x00\x00" +

    lh(w) + lh(h) + b"\x01\x00\x01\x00\xff\xff\xff\x00\x00\x00" +

    b"".join([bytes(row+pad) for row in reversed(rows)]))

    For example:

    FF XXXXXXXX

    81 X......X

    A5 X.X..X.X

    81 X......X

    A5 X.X..X.X

    BD X.XXXX.X

    81 X......X

    FF XXXXXXXX

    So, encoding this as a series of rows:

    smile = [[0xFF], [0x81], [0xA5], [0x81], [0xA5], [0xBD], [0x81], [0xFF]]

    Render it with:

    bmp(smile, 8)

    Note that it is the programmer's responsibility to ensure that the required number of bytes are present in each row supplied.

    The black color is specified in the \xff \xff \xff and the white color is specified in the following \x00 \x00 \x00, should you want to change them.

    展开全文
  • import math, structmult4 = lambda n: int(math.ceil(n/4))*4mult8 = lambda n: int(math.ceil(n/8))*8lh = lambda n: struct.pack("li = lambda n: struct.pack("def bmp(rows, w):h, wB = len(rows),...

    这是单色位图的完整答案。

    import math, struct

    mult4 = lambda n: int(math.ceil(n/4))*4

    mult8 = lambda n: int(math.ceil(n/8))*8

    lh = lambda n: struct.pack("

    li = lambda n: struct.pack("

    def bmp(rows, w):

    h, wB = len(rows), int(mult8(w)/8)

    s, pad = li(mult4(wB)*h+0x20), [0]*(mult4(wB)-wB)

    s = li(mult4(w)*h+0x20)

    return (b"BM" + s + b"\x00\x00\x00\x00\x20\x00\x00\x00\x0C\x00\x00\x00" +

    lh(w) + lh(h) + b"\x01\x00\x01\x00\xff\xff\xff\x00\x00\x00" +

    b"".join([bytes(row+pad) for row in reversed(rows)]))例如:

    FF XXXXXXXX

    81 X......X

    A5 X.X..X.X

    81 X......X

    A5 X.X..X.X

    BD X.XXXX.X

    81 X......X

    FF XXXXXXXX所以,将其编码为一系列行:

    smile = [[0xFF], [0x81], [0xA5], [0x81], [0xA5], [0xBD], [0x81], [0xFF]]渲染它:

    bmp(smile, 8)请注意,程序员有责任确保所提供的每行中都包含所需的字节数。

    如果要更改它们,则在\ xff \ xff \ xff中指定黑色并在以下\ x00 \ x00 \ x00中指定白色。

    展开全文
  • 要在MFC中创建一副空白位图,怎么实现。要直接用向文件内写数据的办法,我试了好久没成功,大家看一下下面的程序有何问题 FILE *pFile=fopen("1.bmp","wb"); unsigned char *pBmpBuf;//位图数据 RGBQUAD *...
  • 请问哪位人士能够提供下关于VC6.0如何能够直接创建BMP位图文件,提供资料和贴出源代码都可以,谢谢了……我现在就是想创建一副80X80的正方形的图片,中间又有个小的正方形其灰度值全为255,小的正方形周围的灰度值...
  • 在游戏制作的过程中,总会有特殊的...有了十张图片后,就可以通过设置每张图片所对应的ASCII码,生成一个png 和fnt的描述文件,在程序中去通过解析fnt数据源去png中找到对应纹理信息,创建纹理,显示出图片来。 ...

    在游戏制作的过程中,总会有特殊的需求,比如一个暴击或者获得奖励提示什么的,是需要一个好看的图片来展示的,但是如果有些字是通用的,比如数字,不能每一个数儿都让美术出一个图,只需要0-9,这10张图片就可以了。

    有了十张图片后,就可以通过设置每张图片所对应的ASCII码,生成一个png 和fnt的描述文件,在程序中去通过解析fnt数据源去png中找到对应纹理信息,创建纹理,显示出图片来。


    1.使用egret自己的texture merger 制作图片字

    http://developer.egret.com/cn/github/egret-docs/tools/TextureMerger/BitmapFont/index.html

    2.使用Bitmap Font Generator 制作图片字

    这里有很详细的如何使用该工具
    这个是BitMapFontGenerator的官网

    3. 使用在线编辑导出制作图片字

    在线工具,制作原理和顺序其实一样,但是感觉不怎么好用,而且反应慢点

    4.使用shoeBox制作位图字体

    shoebox很强大,不仅可以做位图字体,还可以合并大图,将大图裁切成小图,做动画等等,屌的一批


    我在用cocos时候,有些字体没有某些字,我用的是Bitmap font Generator。当时用的时候只有windows机器才可以用。不是跨平台的。

    在用egret 做h5游戏的时候,是用的textureMerger ,毕竟是egret自家的东西,在程序里用的还是比较方便的。

    展开全文
  • 如何使用 LoadImage() 读取 BMP 文件 2010年06月04日  下面的代码使用来加载一个 DIBSection 作为位图的 [b]LoadImage[/b] API,然后从 DIBSection 的颜色表中创建一个调色板。 是否存在没有颜色表使用半色调调...
    如何使用 LoadImage() 读取 BMP 文件 
    2010年06月04日
      下面的代码使用来加载一个 DIBSection 作为位图的 [b]LoadImage[/b] API,然后从 DIBSection 的颜色表中创建一个调色板。 是否存在没有颜色表使用半色调调色板:
      BOOL LoadBitmapFromBMPFile( LPTSTR szFileName, HBITMAP *phBitmap, HPALETTE *phPalette ) { BITMAP bm; *phBitmap = NULL; *phPalette = NULL; // Use LoadImage() to get the image loaded into a DIBSection *phBitmap = (HBITMAP)LoadImage( NULL, szFileName, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE ); if( *phBitmap == NULL ) return FALSE; // Get the color depth of the DIBSection GetObject(*phBitmap, sizeof(BITMAP), &bm ); // If the DIBSection is 256 color or less, it has a color table if( ( bm.bmBitsPixel * bm.bmPlanes ) rgb[256]; LPLOGPALETTE pLogPal; WORD i; // Create a memory DC and select the DIBSection into it hMemDC = CreateCompatibleDC( NULL ); hOldBitmap = (HBITMAP)SelectObject( hMemDC, *phBitmap ); // Get the DIBSection's color table GetDIBColorTable( hMemDC, 0, 256, rgb ); // Create a palette from the color tabl pLogPal = (LOGPALETTE *)malloc( sizeof(LOGPALETTE) + (256*sizeof(PALETTEENTRY)) ); pLogPal->palVersion = 0x300; pLogPal->palNumEntries = 256; for(i=0;ipalPalEntry.peRed = rgb.rgbRed; pLogPal->palPalEntry.peGreen = rgb.rgbGreen; pLogPal->palPalEntry.peBlue = rgb.rgbBlue; pLogPal->palPalEntry.peFlags = 0; } *phPalette = CreatePalette( pLogPal ); // Clean up free( pLogPal ); SelectObject( hMemDC, hOldBitmap ); DeleteDC( hMemDC ); } else // It has no color table, so use a halftone palette { HDC hRefDC; hRefDC = GetDC( NULL ); *phPalette = CreateHalftonePalette( hRefDC ); ReleaseDC( NULL, hRefDC ); } return TRUE; }
      以下代码演示如何使用 [b]LoadBitmapFromBMPFile[/b] 函数:
      case WM_PAINT: { PAINTSTRUCT ps; HBITMAP hBitmap, hOldBitmap; HPALETTE hPalette, hOldPalette; HDC hDC, hMemDC; BITMAP bm; hDC = BeginPaint( hWnd, &ps ); if( LoadBitmapFromBMPFile( szFileName, &hBitmap, &hPalette ) ) { GetObject( hBitmap, sizeof(BITMAP), &bm ); hMemDC = CreateCompatibleDC( hDC ); hOldBitmap = (HBITMAP)SelectObject( hMemDC, hBitmap ); hOldPalette = SelectPalette( hDC, hPalette, FALSE ); RealizePalette( hDC ); BitBlt( hDC, 0, 0, bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY ); SelectObject( hMemDC, hOldBitmap ); DeleteObject( hBitmap ); SelectPalette( hDC, hOldPalette, FALSE ); DeleteObject( hPalette ); } EndPaint( hWnd, &ps ); } break;
    展开全文
  • 大家好,我用C#保存成PNG文件,但我的文件尺寸很大。有4000*7000个象素。有没有办法能创建一个BMP,并在BMP上绘图,然后保存为单色(或256色)PNG文件
  • 创建一个bmp格式的简单方法

    千次阅读 2016-12-21 20:32:16
    在MFC编程中会涉及到位图的显示,那么我们如何创建一个能够用于VS导入的bmp格式位图呢,方法如下: 1.将JPG格式的图片用“画图”软件打开 2.点击左上角的“下拉菜单”->另存为->"BMP图片格式"->类型选择“24位位图”...
  • 首先,我们得到一张彩色图片用windows10自带的“画图”打开它,如下: ...另存为格式选择“BMP” 格式选择“单位色图”: 如下:自由之翼好了 关于如何转迎到PCB,插件已经在盐焗鸡,方法在CSDN搜索。 ...
  • 文件的日期时间分创建时间和修改时间,文件一旦创建创建时间就定下不变了,所以日常应用中一般都是取修改时间,我的一个应用(生成二维码)中就是取这个时间判断图片文件是否重新生成。 1、取文件的修改时间VBA有...
  • //创建文件所在目录 string name = "7.doc"; object filename = "C:\\Users\\dell3\\Desktop\\" + name; //文件保存路径 //创建Word文档 _Application WordApp = new ApplicationClass(); Microsoft....
  • 由于PDF格式具有跨平台支持,因此它统治着数字文档的世界。但是,在某些情况下,必须将PDF文件转换为其他文件格式。...在本文中,将使用Aspose.PDF for Java,该工具旨在创建文件以及处理现有PDF
  • DIB一般是存放在磁盘上的以 bmp 为拓展名的位图文件,使用 DIB 的关键是如何将 DIB 中的数据转换为一个内存中的位图并返回一个位图句柄。 bmp 文件的结构定义: 文件的开始是一个 BITMAPFILEHEADER 结构 ...
  • 此示例演示如何使用imwrite函数将图像数据从工作区写入支持的图形文件格式之一的文件。 将图像数据加载到工作区中。 使用imwrite将图像数据导出为位图文件,指定要创建的变量名和输出文件名。如果在文件名中包含扩展...
  • 用VS2010创建了一个Windows 窗体应用程序,程序运行后显示界面如下:  是不是感觉很单调呢?好了,现在给程序添加一个图片作为... 选择目标文件文件格式可以试gig、jpg、bmp等:  选择后:  让我们...
  • \windows\system32目录下有个oeminof.ini,里面是OEM显示的文字信息,把相应项目修改即可,OEM图片使用的是本目录下的OEMlogo.bmp(图片:创建一个图形文件,像素尺寸限制为180x114(长x高),你可以替换成自己的图片,但要...
  • image/bmp,image/gif,image/JPEG,image/pjpeg,image/jpg <param name="maximumSize">2048000 <result name="success">/operations.jsp [/code] action: [code="java"] ...
  • //创建文件 DWORD dwSize; WriteFile(hFile,(void *)&bfh,sizeof(BITMAPFILEHEADER),&dwSize,0);//写入位图文件头 WriteFile(hFile,(void *)&bih,sizeof(BITMAPINFOHEADER),&dwSize,0);//写入位图信息头 ...
  • 第一部分 界面设计

    2013-10-22 23:10:34
    实例112 如何创建特大型文件 实例113 如何制作临时文件 实例114 如何启动帮助文件 实例115 如何使用组件在主机问传送文件 实例116 如何对文件进行编码和解码 实例117 如何设置RichEdit组件的存盘格式 实例118 ...
  • char* fileName[] = {"data/back.bmp","data/detail.bmp"}; for(int i=0; i ; i++) { if(!m_texture[i].LoadBitmap(fileName[i]) ) /**载入位图文件 */ { MessageBox(NULL,"装载位图文件失败!","错误",...
  • if (TextureImage[0]=LoadBMP("Data/Crate.bmp")) { Status=TRUE; // 将 Status 设为 TRUE glGenTextures(1, &texture[0]); // 创建纹理 // 创建 MipMapped 纹理 glBindTexture(GL_TEXTURE_2D...
  • MFC中Button模拟LED灯,

    2015-12-30 05:48:07
    之前看到别人的帖子,用MFC中的Button模拟LED灯,自己尝试了一下,创建bmp文件,都是有背景颜色的,不知道如何做到,在Button显示为LED模拟图片的时候,如何没有背景
  • 第二课: 编写Hello World

    2019-09-17 18:13:28
    在这一节课,我们将学习如何创建一个窗口,创建一个着色正文(rendering context)和绘制一个图像文件到屏幕上。下载下面的这个bmp图像到项目中去,让我们开始吧。 开始使用SDL 为了使用SDL,我们先初始化我们需要...
  • 这里讲的是如何将一副位图(.bmp文件)作为窗口显示的背景。 1. 创建MFC AppWizard[exe]单文档工程 2. 插入位图资源 插入资源—选Bitmap---选择所需要的图片 3. 创建一个兼容设备表DC CDC dcCompatible;  ...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    1.3 创建DLL文件 8 0008 生成一个DLL文件 8 0009 调用DLL文件 8 1.4 窗体相关操作 9 0010 将组件置前/置后 9 0011 如何锁定窗体中的组件 9 0012 如何改变窗体上的网格大小 10 0013 组件的选取 10 ...
  • Cadence Allegro Logo添加与缩放

    千次阅读 2019-09-03 21:10:59
    在Allegro中添加LOGO有很多方法,可以通过导入DXF文件创建,也可以用Skill直接导入BMP格式的图片。今天教大家用Allegro自带功能导入BMP图片制作LOGO的技巧,首先将LOGO制作成机械封装器件,然后在PCB中通放置非网表...
  • 游戏资源提取工具

    2012-10-12 14:59:15
    如果打开的文件支持与如此諦めれ (Oh 不相符,则打开但是,如果存档文件的内容是 AHX、 BMP、 JPG、 MID、 MPG、 OGG、 PNG、 WAV、 WMV 揪出可能的。[解压缩],选择您要检索的文件以后打开-k 是 > 选择中提取。...

空空如也

空空如也

1 2 3 4 5 6
收藏数 116
精华内容 46
关键字:

如何创建bmp文件