改变蜡笔小新的眼睛颜色(对bmp图像的部分更改)
使用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图像的部分更改)相关推荐
- iOS小技巧-UISwitch改变系统默认的颜色
UISwitch的默认颜色为绿色,有时候根据设计的需求,颜色会不一样,所以此时我们需要自己改变UISwitch的默认颜色, 方法很简单:更改tintColor.onTintColor这两个属性,就可. ...
- c语言怎么计算bmp图像大小,C语言如何取出一张256色位的bmp图像的某个像素的颜色...
C语言怎么取出一张256色位的bmp图像的某个像素的颜色 我想实现的是:将一张256色位图的bmp图像(1.bmp)上下左右移动N个像素(比如向右移5个像素,最左边的5个像素全涂成黑色)生成另一张图像 ...
- 如何在Photoshop中更改某人的眼睛颜色
Have you ever wondered what you'd look like if your eyes were a different color? Mine are gray, but ...
- HBITMAP与BITMAP 的区别 BMP图像的格式
HBITMAP 是句柄: BITMAP 是实例: typedef struct tagBITMAP { /* bm */ int bmType;//必须是BM int bmWidth;//指定位图的宽 ...
- HBITMAP与BITMAP 的区别 BMP图像的格式
HBITMAP 是句柄: BITMAP 是实例: typedef struct tagBITMAP { /* bm */ int bmType;//必须是BM ...
- C语言实现将彩色bmp图像转化为灰图、灰度图像反色
彩色图像转灰度图像 彩色(24位)bmp图像结构: typedef struct{bitmapFileHeader bfHeader;bitmapInfoHeader biHeader;unsigne ...
- C语言读取bmp图像并做简单显示
C语言读取bmp图像并做简单显示) bmp文件格式 读取bmp文件信息并展示 bmp文件格式 bmp文件大体上分为四个部分: bmp文件构成 位图文件头BITMAPFILEHEADER 位图信息头BI ...
- DICOM医学图像处理:DICOM存储操作之“多幅BMP图像数据存入DCM文件”
背景: 本专栏"DICOM医学图像处理"受众较窄,起初只想作为自己学习积累和工作经验的简单整理.前几天无聊浏览了一下,发现阅读量两极化严重,主要集中在"关于BMP(JPG ...
- 【转】BMP图像文件格式
5.1 BMP图像文件格式 BMP图像文件格式是游戏中常用的图像资源文件格式,BMP图像文件起源早,程序员对BMP都比较熟悉,再加上BMP格式简单,读取和写入非常容易实现,所以无论Windows的还 ...
- BMP图像文件格式分析附带图解
From: http://www.raidcn.com/js/BMPTuXiangWenJianGeShiFenXiFuDaiTuJie.html 认识BMP文件格式,以及bmp文件存储结构 ,通过w ...
最新文章
- 听君今一言,似读半月书
- POJ 1028: Web Navigation
- MySQL Table--独立表空间
- python,时间加减,时间计算,时间格式化,时间提取汇总
- hive python脚本,Hive调用Python脚本错误
- 实体验证---测试代码
- 建站篇-数据库-修改默认users表
- python控制小爱同学_小爱同学控制电脑开机 - IT客栈
- java五险一金去从工资扣吗,五险一金需要自己交钱吗?是从工资里扣除还是......
- 基金,最适合普遍投资者的工具
- 福建省漳州市谷歌卫星地图下载
- [iOS Xib加载/封装] xib加载以后无法赋值Laber属性的值
- C语言或less或sass中,ceil floor 无法传入动态变量取整的办法
- 寒假还在纠结考研还是就业,听听研究生毕业的上班狗怎么说?
- 在html页面上引用脚本文件,如何在html中调用JS文件
- 3、TextBox 控件
- 本地计算机无法启动错误1068,Win7系统启动失败并提示错误1068的解决办法
- 【Arduino】交通灯控制设计 四位数码管
- m基于基站休眠的LTE-A异构网络中节能算法matlab仿真
- 求1到100的质数,用python写
热门文章
- 更新appid失败,登录用户不是该小程序的开发者
- 产品经理实践【四川省地震需求分析】
- Cousera Notebook 之 Python 备份记录
- linux gz的如何解压缩,linux gz 解压缩
- 国外游戏开发公司10强
- win7 pptp服务器未响应,win7下vpn无法使用的解决办法
- 零基础学SVM—Support Vector Machine(一)
- B站赴美上市;刘炽平减持100万股腾讯股份;《花花公子》删除官方Facebook账户丨价值早报
- 【Redis-6.0.8】Redis中的RAX
- 修改Chrome浏览器默认背景颜色为浅绿色