使用C语言实现对bmp图像的部分更改

fseek 偏移指针
函数详情介绍如下:

int fseek(FILE *stream, long offset, int whence);
功能:用来设置光标的位置
参数:@stream:文件指针@offset:设置到哪里(偏移)>0 向后偏移=0  不偏移<0 向前偏移@whence:从哪里开始设置SEEK_SET:开头SEEK_CUR:当前位置SEEK_END :结尾
返回值:成功返回0,失败返回-1置位错误码

更改前图片

#include <head.h>typedef struct picture {unsigned int size; //大小unsigned int offset; //头文件开始到实际的图像数据之间的字节偏移量unsigned int width; //文件的宽unsigned int high; //文件的高unsigned short pix; //文件的像素点
} p_t;typedef struct {unsigned char B; //蓝unsigned char G; //绿unsigned char R; //红
} RGB_t;void get_picture_head_info(FILE* fp, p_t* info)
{fseek(fp, 2, SEEK_SET);fread(&info->size, 4, 1, fp);fseek(fp, 10, SEEK_SET);fread(&info->offset, 4, 1, fp);fseek(fp, 18, SEEK_SET);fread(&info->width, 4, 1, fp);fread(&info->high, 4, 1, fp);fseek(fp, 2, SEEK_CUR);fread(&info->pix, 2, 1, fp);
}void show_picture_head_info(p_t* info)
{printf("size=%d,offset=%d,width=%d,high=%d,pix=%d\n", info->size, info->offset, info->width, info->high, info->pix);
}int main(int argc, const char* argv[])
{FILE* fp;p_t info;RGB_t rgb;if (argc != 2) {fprintf(stderr, "input erroe,try again\n");fprintf(stderr, "usage: ./a.out picturename\n");return -1;}if ((fp = fopen(argv[1], "r+")) == NULL)PRINT_ERR("fopen error");get_picture_head_info(fp, &info);show_picture_head_info(&info);fseek(fp, 54, SEEK_SET); //将光标移动到图像数据位fread(&rgb, 3, 1, fp); //在fp中从rgb开始读,每次读3字节,读一组printf("B=%d,G=%d,R=%d\n", rgb.B, rgb.G, rgb.R); // 255 255 255说明此时为白色memset(&rgb, 0, sizeof(rgb));rgb.B = 255;int sum = 1092000 + 840;fseek(fp, sum, SEEK_SET);for (int i = 0; i < 40; i++) {for (int j = 0; j < 45; j++) {fwrite(&rgb, 3, 1, fp);}fseek(fp, sum = sum + 2100, SEEK_SET);}fclose(fp);return 0;
}

更改后图像

改变蜡笔小新的眼睛颜色(对bmp图像的部分更改)相关推荐

  1. iOS小技巧-UISwitch改变系统默认的颜色

    UISwitch的默认颜色为绿色,有时候根据设计的需求,颜色会不一样,所以此时我们需要自己改变UISwitch的默认颜色, 方法很简单:更改tintColor.onTintColor这两个属性,就可. ...

  2. c语言怎么计算bmp图像大小,C语言如何取出一张256色位的bmp图像的某个像素的颜色...

    C语言怎么取出一张256色位的bmp图像的某个像素的颜色 我想实现的是:将一张256色位图的bmp图像(1.bmp)上下左右移动N个像素(比如向右移5个像素,最左边的5个像素全涂成黑色)生成另一张图像 ...

  3. 如何在Photoshop中更改某人的眼睛颜色

    Have you ever wondered what you'd look like if your eyes were a different color? Mine are gray, but ...

  4. HBITMAP与BITMAP 的区别 BMP图像的格式

    HBITMAP 是句柄: BITMAP 是实例: typedef struct tagBITMAP { /* bm */ int bmType;//必须是BM int bmWidth;//指定位图的宽 ...

  5. HBITMAP与BITMAP 的区别 BMP图像的格式

    HBITMAP   是句柄:   BITMAP    是实例: typedef struct tagBITMAP {  /* bm */     int     bmType;//必须是BM      ...

  6. C语言实现将彩色bmp图像转化为灰图、灰度图像反色

    彩色图像转灰度图像 彩色(24位)bmp图像结构: typedef struct{bitmapFileHeader bfHeader;bitmapInfoHeader biHeader;unsigne ...

  7. C语言读取bmp图像并做简单显示

    C语言读取bmp图像并做简单显示) bmp文件格式 读取bmp文件信息并展示 bmp文件格式 bmp文件大体上分为四个部分: bmp文件构成 位图文件头BITMAPFILEHEADER 位图信息头BI ...

  8. DICOM医学图像处理:DICOM存储操作之“多幅BMP图像数据存入DCM文件”

    背景: 本专栏"DICOM医学图像处理"受众较窄,起初只想作为自己学习积累和工作经验的简单整理.前几天无聊浏览了一下,发现阅读量两极化严重,主要集中在"关于BMP(JPG ...

  9. 【转】BMP图像文件格式

    5.1  BMP图像文件格式 BMP图像文件格式是游戏中常用的图像资源文件格式,BMP图像文件起源早,程序员对BMP都比较熟悉,再加上BMP格式简单,读取和写入非常容易实现,所以无论Windows的还 ...

  10. BMP图像文件格式分析附带图解

    From: http://www.raidcn.com/js/BMPTuXiangWenJianGeShiFenXiFuDaiTuJie.html 认识BMP文件格式,以及bmp文件存储结构 ,通过w ...

最新文章

  1. 听君今一言,似读半月书
  2. POJ 1028: Web Navigation
  3. MySQL Table--独立表空间
  4. python,时间加减,时间计算,时间格式化,时间提取汇总
  5. hive python脚本,Hive调用Python脚本错误
  6. 实体验证---测试代码
  7. 建站篇-数据库-修改默认users表
  8. python控制小爱同学_小爱同学控制电脑开机 - IT客栈
  9. java五险一金去从工资扣吗,五险一金需要自己交钱吗?是从工资里扣除还是......
  10. 基金,最适合普遍投资者的工具
  11. 福建省漳州市谷歌卫星地图下载
  12. [iOS Xib加载/封装] xib加载以后无法赋值Laber属性的值
  13. C语言或less或sass中,ceil floor 无法传入动态变量取整的办法
  14. 寒假还在纠结考研还是就业,听听研究生毕业的上班狗怎么说?
  15. 在html页面上引用脚本文件,如何在html中调用JS文件
  16. 3、TextBox 控件
  17. 本地计算机无法启动错误1068,Win7系统启动失败并提示错误1068的解决办法
  18. 【Arduino】交通灯控制设计 四位数码管
  19. m基于基站休眠的LTE-A异构网络中节能算法matlab仿真
  20. 求1到100的质数,用python写

热门文章

  1. 更新appid失败,登录用户不是该小程序的开发者
  2. 产品经理实践【四川省地震需求分析】
  3. Cousera Notebook 之 Python 备份记录
  4. linux gz的如何解压缩,linux gz 解压缩
  5. 国外游戏开发公司10强
  6. win7 pptp服务器未响应,win7下vpn无法使用的解决办法
  7. 零基础学SVM—Support Vector Machine(一)
  8. B站赴美上市;刘炽平减持100万股腾讯股份;《花花公子》删除官方Facebook账户丨价值早报
  9. 【Redis-6.0.8】Redis中的RAX
  10. 修改Chrome浏览器默认背景颜色为浅绿色