社区
图形处理/算法
帖子详情
如何将EMF格式的图片转化为BMP格式?
yycpp1
2003-06-25 03:02:59
最好不要用到GDI+。
...全文
3124
10
打赏
收藏
如何将EMF格式的图片转化为BMP格式?
最好不要用到GDI+。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
luoxiangdong
2003-07-04
打赏
举报
回复
GetEnhMetaFile得到emf句炳然后PlayEnhMetaFile到dc上,然后将dc中的位图用GetDIBits转成dib,将dib写入文件就可以了。
这个是我刚刚做过个程式(AnyDraw)里的一个小功能
http://www.coolcol.com
你可以先插入WMF或EMF,然后导出为BMP
NewFree
2003-07-03
打赏
举报
回复
GDI+能转BMP to EMF?我试了好象不行
Happy197212
2003-06-30
打赏
举报
回复
谁知道GDI到底支持多少图象格式? 支持PSD, PICT, PPM格式吗?
TyraelTiger
2003-06-26
打赏
举报
回复
不用这么复杂吧?如果系统是2000及以上版本,那么可以使用系统自带的GDI+,可以实现任意格式图片的转换.
wygsh
2003-06-26
打赏
举报
回复
EMF (Enhanced MetaFile) ——是在印刷工业中应用与Windows操作系统的文件格式。实际上EMF是原始WMF(Windows metafile)格式的32位版本。EMF格式的产生是为了解决WMF在印刷行业中的不足。EMF是设备独立性的一种格式,也就是说EMF可以始终保持着图形的精度,而无论用打印机打印出何种分辨率(dot/inch)的硬拷贝。而在网路上,较小的EMF格式可以节省带宽。
如果你要将EMF格式转换成BMP格式,肯定要先了解EMF格式的,读出它的数据,然后写入位图格式中,最后create一个位图即可。网上有很多关于EMF的格式的,搜一下吧,如果找不着再发信给我,我给你发过去。
kenwhale
2003-06-26
打赏
举报
回复
GetEnhMetaFile得到emf句炳然后PlayEnhMetaFile到dc上,然后将dc中的位图用GetDIBits转成dib,将dib写入文件就可以了。
TyraelTiger
2003-06-26
打赏
举报
回复
关于GDI+里面图像转换,详细的请看这里:
http://www.powerba.com/develop/vc/article/20020411001.htm
taianmonkey
2003-06-26
打赏
举报
回复
int Tofile(HBITMAP hbitmap , LPSTR lpfilename)
{
HDC hdc; //设备描述表
int ibits;
WORD wbitcount; //当前显示分辨率下每个像素所占字节数
//位图中每个像素所占字节数,定义调色板大小,位图中像素字节大小,位图文件大小 ,写入文件字节数
DWORD dwpalettesize=0, dwbmbitssize, dwdibsize, dwwritten;
BITMAP bitmap; //位图属性结构
BITMAPFILEHEADER bmfhdr; //位图文件头结构
BITMAPINFOHEADER bi; //位图信息头结构
LPBITMAPINFOHEADER lpbi; //指向位图信息头结构
//定义文件,分配内存句柄,调色板句柄
HANDLE fh, hdib, hpal,holdpal=NULL;
//计算位图文件每个像素所占字节数
hdc = CreateDC("display",NULL,NULL,NULL);
ibits = GetDeviceCaps(hdc, BITSPIXEL) * GetDeviceCaps(hdc, PLANES);
DeleteDC(hdc);
if (ibits <= 1)
wbitcount = 1;
else if (ibits <= 4)
wbitcount = 4;
else if (ibits <= 8)
wbitcount = 8;
else if (ibits <= 16)
wbitcount = 16;
else if (ibits <= 24)
wbitcount = 24;
else
wbitcount = 32;
//计算调色板大小
if (wbitcount <= 8)
dwpalettesize = (1 << wbitcount) * sizeof(RGBQUAD);
//设置位图信息头结构
GetObject(hbitmap, sizeof(BITMAP), (LPSTR)&bitmap);
bi.biSize = sizeof(LPBITMAPINFOHEADER);
bi.biWidth = bitmap.bmWidth;
bi.biHeight = bitmap.bmHeight;
bi.biPlanes = 1;
bi.biBitCount = wbitcount;
bi.biCompression = BI_RGB;
bi.biSizeImage = 0;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 0;
bi.biClrImportant = 0;
dwbmbitssize = ((bitmap.bmWidth * wbitcount+31)/32)* 4 * bitmap.bmHeight ;
//为位图内容分配内存
hdib = GlobalAlloc(GHND,dwbmbitssize + dwpalettesize + sizeof(BITMAPINFOHEADER));
lpbi = (LPBITMAPINFOHEADER)GlobalLock(hdib);
*lpbi = bi;
// 处理调色板
hpal = GetStockObject(DEFAULT_PALETTE);
if (hpal)
{
hdc = ::GetDC(NULL);
holdpal = SelectPalette(hdc, (HPALETTE)hpal, false);
RealizePalette(hdc);
}
// 获取该调色板下新的像素值
GetDIBits(hdc, hbitmap, 0, (UINT) bitmap.bmHeight,(LPSTR)lpbi +
sizeof(BITMAPINFOHEADER)+dwpalettesize,(BITMAPINFO*)lpbi, DIB_RGB_COLORS);
//恢复调色板
if (holdpal)
{
SelectPalette(hdc, (HPALETTE)holdpal, true);
RealizePalette(hdc);
::ReleaseDC(NULL, hdc);
}
//创建位图文件
fh = CreateFile(lpfilename, GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN, NULL);
if (fh == INVALID_HANDLE_VALUE)
return false;
// 设置位图文件头
bmfhdr.bfType = 0x4d42; // "bm"
dwdibsize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER)+ dwpalettesize + dwbmbitssize;
bmfhdr.bfSize = dwdibsize;
bmfhdr.bfReserved1 = 0;
bmfhdr.bfReserved2 = 0;
bmfhdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER)+ dwpalettesize;
// 写入位图文件头
WriteFile(fh, (LPSTR)&bmfhdr, sizeof(BITMAPFILEHEADER), &dwwritten, NULL);
// 写入位图文件其余内容
WriteFile(fh, (LPSTR)lpbi, dwdibsize, &dwwritten, NULL);
//清除
GlobalUnlock(hdib);
GlobalFree(hdib);
CloseHandle(fh);
return true;
}
bluespirits
2003-06-26
打赏
举报
回复
如果系统是2000及以上版本,那么可以使用系统自带的GDI+,可以实现任意格式图片的转换.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~请问那些函数能够转换?
zys_11122
2003-06-25
打赏
举报
回复
投影到DC上然后存出来
Latex
图片
格式
转化
软件(将JPG,
BMP
, GIF, TIF, PNG
转化
成eps
格式
))完整版
专门用于Latex的
图片
转换小软件由于Latex对esp
格式
的文件支持的较好,其他
格式
的
图片
文件需要对其进行转换。 功能:将JPG,
BMP
, GIF, TIF, PNG
转化
成eps
格式
EMF
文件提取文本,预览,打印
emf
文件是windows的一种打印
格式
,该资源可以对
emf
文件进行文本提取和推送打印机打印以及转换成图像
Delphi将jpg、
bmp
、wmf
格式
转换为
emf
格式
内容索引:Delphi源码,图形处理,图像转换 Delphi将图像从jpg,ico,
bmp
,wmf
格式
转换为
emf
格式
,挺简单的程序,转换效果不错。
bmp
转
emf
矢量图
位图
bmp
转
emf
矢量图,以及
emf
矢量图转位图
bmp
的源码。
eps,
emf
,jpg
格式
相互转换方法.docx
。。。
图形处理/算法
19,468
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章