假设我已经分配了一个二维数组int bitmap [WIDTH] [HEIGHT]。 我希望让Linux系统在这个位图缓冲区中画一行文本,比如说“Hello World”,就好像Linux在屏幕上打印正常文本一样,这样我就可以提取文本的位图模式,并将其与我的其他位图图像。 那么,请您分享一个适用于Linux的C ++代码片段吗? 非常感谢。 PS:我可以find一些代码来完成这个工作,但是他们在Windows上,而不是在Linux上。 PS2:如果你没有碰到代码,你可以教我如何编写代码,但是请期待Linux C ++编程中很多天真的问题。
有没有一个命令行工具转换字形从TTF文件,PNG(或一些其他位图图像格式)? 如果没有准备好的命令行工具,那么你将如何从C ++,Perl,Python或Ruby之一或者Ubuntu盒子上轻松find它?
在include / linux / bitmap.h中,在bitmap_zero()中,为什么使用memset? static inline void bitmap_zero(unsigned long *dst, int nbits) { if (small_const_nbits(nbits)) *dst = 0UL; else { int len = BITS_TO_LONGS(nbits) * sizeof(unsigned long); memset(dst, 0, len); } } 是*det = OUL不够?
我有一个位图 uint64_t bitmap[10000] 跟踪系统中分配的资源。 现在的问题是如何有效地find位图中的第一个未设置(零)位? 我知道在glibc中有ffsll(unsigned long long)来查找第一个设置位,我假设它使用硬件指令来执行它。 要使用这个函数在我的情况下,首先我需要初始化数组,以设置每一位为1,然后当我做资源分配,我必须线性search数组的第一个非零字。 然后使用ffsll()来查找第一个设置位。 我怎么能做得更快? 更新:我在一个x86-64 CPU。
这是我的一些位掩码(单色位图)。 Bitmask_Create()函数没有问题。 我已经testing了打开,加载和保存窗口单色位图,它工作的很好。 但是,我所做的GetPixel和SetPixel函数似乎并不正确。 在某些情况下,他们似乎工作正常取决于位图维度。 如果有人可以帮忙,我将不胜感激。 这让我疯狂。 谢谢。 typedef struct _GL_BITMASK GL_BITMASK; struct _GL_BITMASK { int nWidth; // Width in pixels int nHeight; // Height in pixels int nPitch; // Width of scanline in bytes (may have extra padding to align to DWORD) BYTE *pData; // Pointer to the first byte of the first scanline […]
这是解决多function打印机驱动程序的最后一招。 我想渲染到一个兼容的位图,然后旋转它之前或复制到打印机DC。 我熟悉这个推荐GDI +的前一个问题 ,但是我很想知道是否只有使用GDI的答案。
我需要在托pipe代码中使用一些位图,并将它们保存为PNG文件。 我应该使用Microsoft.WindowsAPICodePack.DirectX.WindowsImagingComponent ,或System.Windows.Media.Imaging ? 他们看起来都非常相似,我不确定为什么我会select一个。 任何人都可以比较和比较它们吗?
我需要一些帮助创build一个AVI文件的位图。 问题是,最后我得到一个损坏的AVI文件。 如果我用HEX_Editor读取它的整个AVI头为0 … 我使用Borland C ++ Builder 6和Windows 7 64位 AVIINFO结构: typedef struct { PAVISTREAM aviStream; PAVISTREAM aviStreamCompressed; PAVIFILE aviFile; AVISTREAMINFO avistInfo; AVICOMPRESSOPTIONS avistComprOpts; unsigned long framenumber; // which frame will be added next } AVIINFO, *PAVIINFO; pstBmpInfo已经像这样被填充了: biSize = 40 biWidth = 800 biHeight = 600 biPlanes = 1 biBitcount = 24 biSizeImage […]
我已经做了一个Mandelbrot分形生成器(谁还没有,我知道),它可以直接渲染到磁盘生成巨大的分形。 我的第一个testing是超高清4k分辨率,结果很好(所有这些例子都是8位颜色)。 所以我决定去疯狂一点,在两个方面都增加了10倍,例如38400 x 21600.由此产生的文件似乎不是有效的,因为Photoshop无法打开它,但即使在Windows资源pipe理器中查看文件属性也显示尺寸/等缺失。 我以为有一个机会,极限是32768,所以我试图通过做一个30000×30000下去。这似乎仍然是无效的。 下降到10000 x 10000工作正常,所以我想知道什么是文件格式的限制? 即使10x4k分辨率文件小于1GB,文件大小也不应该成为问题。
我想这可能是错误的,所以请让我先说明一下目标:我想通过将两个图像异或来比较两个图像,然后将结果保存(不显示)为文件。 其实,我想平均所有的比特值来获得一个百分比匹配,但这一部分并不难。 所以BitBlt (记住BitBlt?)有一个叫做SRCINVERT的ROP,它正是这样做的。 而且尖叫得很快。 作品一种享受。 但是…它想要一个源和目标DC( 设备上下文 )… …您可以select一个位图到这些DC的位图,但你必须有DC。 使用CreateCompatibleDC(0)可以方便地创buildDC。 甚至CreateDC(L“DISPLAY”,NULL,NULL,NULL); 但是…这些都是基于当前硬件显示的像素深度,尺寸等。 {编辑:Nop,CreateCompatibleDC(0); 从所选的位图中获取所有的东西,我只是没有真正使用它}我不关心这一点,我想像素深度等工作,我正在加载的位图文件从。 其实这是一个命令行程序, 它永远不会有一个窗口。 编辑:但是因为DC是用于实际的屏幕,当使用CreateDC(L“DISPLAY”,NULL,NULL,NULL)时,我看到图像显示(覆盖桌面)之前,它被保存到一个文件。 我卡住了吗? 我是否必须find另一个graphics库来执行我的异或function? 或者有没有办法使用BitBlt? 更普遍的是,有没有办法做GDI或GDIPlustypes的东西与目前的系统中不存在的DC? 这对于能够处理图像文件的程序来说不是一件非常有用的事情,而不必显示结果吗?