社区
C语言
帖子详情
想实现在C程序中插入本地机器上的图片,有什么方法吗?
qinhaichao
2006-11-22 01:26:25
是不是有可以直接调用的函数或者其他的办法?请高手指点,先谢!
...全文
264
5
打赏
收藏
想实现在C程序中插入本地机器上的图片,有什么方法吗?
是不是有可以直接调用的函数或者其他的办法?请高手指点,先谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jixingzhong
2006-11-22
打赏
举报
回复
操作BMP文件的程序:
http://post.baidu.com/f?kz=74560865
把里面的代码 摘出 你要的部分就可以了 ~~
laiwusheng
2006-11-22
打赏
举报
回复
windows下的话很简单/.
HBITMAP bitmap=(HBITMAP)LoadImage("dsaf.bmp",NULL,IMAGE_BITMAP,LR_LOADFROMEFILE);
hdc=GetDC(hWnd);
mdc=CreatecompatibleDC(hdc);
selectobject(mdc,bitmap);
bitblt(hdc,0,0,800,600,mdc,0,0,SRCCOPY);
DOS下
bmp.c
#include <stdio.h>
#include <math.h>
#include <alloc.h>
#include <io.h>
#include <dos.h>
#include <mem.h>
#include <conio.h>
#include <stdlib.h>
unsigned int im_width,pat_size;
main(argc,argv)
int argc;
char *argv[];
{
unsigned char buffer[54];
unsigned char pat[256][4];
int bit_count;
long i;
unsigned char huge *img1;
unsigned char huge *img;
unsigned int width,higth,j,k,color;
FILE *fp1,*fp2;
union {
struct {
unsigned lobyte:4;
unsigned hibyte:4;
}parts;
struct {
unsigned char allbyte;
}whole;
}db1;
if(argc<2)
{
printf("Usage:bmp bmpfilename\n");
exit(1);
}
if(!(fp1=fopen(argv[1],"rb")))
{
printf("Open file %s error!\n",argv[1]);
exit(1);
}
fread(buffer,1,54,fp1);
im_width=buffer[19]*256+buffer[18];
higth=buffer[23]*256+buffer[22];
if((im_width%8)!=0)
width=(im_width/8+1)*8;
else width=im_width;
pat_size=(buffer[11]*256+buffer[10]-54)/4;
bit_count=buffer[28];
/* read color pattern fread(pat,sizeof(unsigned char ),pat_size*4,fp1); */
if(!(img=farcalloc((width/(8/bit-count)),sizeof(unsigned char))))
{
printf("Can't open pointor img.\n");
abort();
}
{
if(bit_count==4)
for(k=0;k<higth;k++)
fread(img,sizeof(unsigned char),(width/2),fp1);
for(j=0;j<width/2;j++){
db1.whole.allbyte=(*)img+j));
(*(img1+(long)(higth-1-k)*(long)width+(long)j*2))=db1.parts.hibyte;
(*(img1+(long)(higth-1-k)*(long)width+(long)j*2+11))=db1.parts.lobyte;
}
}
else /*bit _count==8
for(k=0;k<higth;k++) {
fread(img,sizeof(unsigned char),width,fp1);
for(j=0;j<width;j++)
(*(img1+(long)(higth-1-k)*(long)width+(long)j))=(*(img+j));
}
disp(img1,pat,higth,width);
fclose(fp1);
farfree(img);
farfree(img1);
}
}
#define SCREEN_HIGHT 200
#define SCREEN_WIDTH 320
#define MMODE 0x13
disp(unsigned char huge *image,unsigned char *pattern,unsigned int row,unsigned int column)
{
unsigned char far *im;
unsigned char far *buf;
unsigned char pat[256][3];
unsigned int column1,x0=0,y0=0;
int i,j;
long size;
void set_color_pat(unsigned char far pat[256][3]);
void set_mode(int);
if(row-x0)>SCREEN_HIGHT) row=SCREEN_HIGHT;
else row=row-x0;
if(im_width-y0>SCREEN_WIDTH) column1=SCREEN_WIDTH;
else column1=im-width-y0;
set_mode(MMODE);
/* change value of red and blue */
for(i=0;i<pat_size;i++)
for(j=0;j<3;j++)
pati][j]=(*(pattern+i*4+(2-j)))/4;
set_color_pat(pat);
/* write to display card */
buf=(unsigned char far *)MK_FP(oxa000,0);
lsize=0;
for(i=0;i<row;i++)
{
lsize=lsize+SCREEN_WIDTH;
if(lsize<655361)
{
memcpy(buf,(image+i*column),column1);
buf=buf+SCREEN-WIDTH;
}
else
{ pritf("overflow:image too large.\n");
}
}
getch();
set_mode(3);
}
void set_mode(int mode)
{ union REGS r;
r.h.ah=0;
r.h.al=mode;
int86(0x10,&r,&r);
}
void set_color_pat(unsigned char far pat[256][3])
{
union REGS r;
struct SREGS s;
r.h.ah=0x10;
r.h.al=0x12;
r.x.bx=0;
r.x.cx=256;
r.x.dx=FP_OFF(pat);
s.es=FP_SEG(pat);
int86x(0x10,&r,&r,&s);
}
zez
2006-11-22
打赏
举报
回复
先说明白你要干嘛..
图片是什么?
你要搞明白 各种图片文件的格式...
你说的插入是什么意思? 往哪插?
话都说不明白..怎么回复:(
goldendreams
2006-11-22
打赏
举报
回复
好像要把图片转换成二进制数组吧
菜鸟一个,期待高手指点...
kangji
2006-11-22
打赏
举报
回复
什么意思??
汽车雷达多干扰下信号幅相精准估计:全卷积网络新方案【附python代码】.rar
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
HTML浪漫动态表白代码
代码转载自:https://pan.quark.cn/s/a4b39357ea24 考虑到仓库大小,此
程序
单独存放,请前往 https://.com/sun0225SUN/C-Love-Code
山西忻州代县产业发展分析建议:数字化赋能,科技创新驱动未来.docx
山西忻州代县产业发展分析建议:数字化赋能,科技创新驱动未来
C# OnnxRuntime 部署 APISR 动漫超分辨率模型.rar
C# OnnxRuntime 部署 APISR 动漫超分辨率模型 博客地址:https://blog.csdn.net/lw112190/article/details/159728652
Windows server
实现
高可用
Windows server
实现
高可用
C语言
70,037
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章