c语言改变图片颜色,用c语言把bmp格式的彩色图片转换成黑白的
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
typedef unsigned char BYTE;
#define RGB 3.0
#define MAX 255.0
struct BitMap
{
short Type;
long Size;
short Reserve1;
short Reserve2;
long Offset;
long FileSize;
long Width;
long Height;
short ClrPlanes;
short BitsPerPix;
long Compression;
long ImSize;
long XPixPerMeter;
long YPixPerMeter;
long ClrTBClr;
long ImpClr;
} Header;
typedef struct
{
BYTE Blue;
BYTE Green;
BYTE Red;
} __attribute__((__packed__))
RGBTRIPLE;
int main(int argc, char **argv) {
FILE *inptr, *outptr;
float threshold;
threshold = atoi(argv[2]);
if(argc < 3) {
printf("Usage : ./a.out threshold\n");
exit(0);
}
else inptr = fopen(argv[1], "rb");
outptr = fopen ("out.bmp", "wb");
memset(&Header, 0, sizeof(Header));
fread(&Header.Type, 2, 1, inptr);
fwrite(&Header.Type, 2, 1, outptr);
fread(&Header.Size, 4, 1, inptr);
fwrite(&Header.Size, 4, 1, outptr);
fread(&Header.Reserve1, 2, 1, inptr);
fwrite(&Header.Reserve1, 2, 1, outptr);
fread(&Header.Reserve2, 2, 1, inptr);
fwrite(&Header.Reserve2, 2, 1, outptr);
fread(&Header.Offset, 4, 1, inptr);
fwrite(&Header.Offset, 4, 1, outptr);
fread(&Header.FileSize, 4, 1, inptr);
fwrite(&Header.FileSize, 4, 1, outptr);
fread(&Header.Width, 4, 1, inptr);
fwrite(&Header.Width, 4, 1, outptr);
fread(&Header.Height, 4, 1, inptr);
fwrite(&Header.Height, 4, 1, outptr);
fread(&Header.ClrPlanes, 2, 1, inptr);
fwrite(&Header.ClrPlanes, 2, 1, outptr);
fread(&Header.BitsPerPix, 2, 1, inptr);
fwrite(&Header.BitsPerPix, 2, 1, outptr);
fread(&Header.Compression, 4, 1, inptr);
fwrite(&Header.Compression, 4, 1, outptr);
fread(&Header.ImSize, 4, 1, inptr);
fwrite(&Header.ImSize, 4, 1, outptr);
fread(&Header.XPixPerMeter, 4, 1, inptr);
fwrite(&Header.XPixPerMeter, 4, 1, outptr);
fread(&Header.YPixPerMeter, 4, 1, inptr);
fwrite(&Header.YPixPerMeter, 4, 1, outptr);
fread(&Header.ClrTBClr, 4, 1, inptr);
fwrite(&Header.ClrTBClr, 4, 1, outptr);
fread(&Header.ImpClr, 4, 1, inptr);
fwrite(&Header.ImpClr, 4, 1, outptr);
// iterate over infile's scanlines
int i,j;
if (Header.Compression!=24) {
printf("Error: This program only deals with 24 compressed bmp file\n");
return 1;
}
if (threshold <0 || threshold >1.0) {
printf("Error: Threshold value is not valid\n");
return 1;
}
else for (i=0; i
{
// iterate over pixels in scanline
for (j=0; j
{
// temporary storage
RGBTRIPLE triple, tripleout;
int sum = 0;
// read RGB triple from infile
fread(&triple, sizeof(RGBTRIPLE), 1, inptr);
sum = triple.Red+triple.Green+triple.Blue;
float ratio = sum/(RGB*MAX);
printf("(%d, %d, %d)\n", triple.Red, triple.Green, triple.Blue);
// prints rgb values for each pixel (used to check if the colours were right)
printf("ratio is: %f\n", ratio);
// gives the ratio
if (ratio
tripleout.Red = 0;
tripleout.Green = 0;
tripleout.Blue = 0;
}
// this part needs to be done
else {
tripleout.Red = 255;
tripleout.Green = 255;
tripleout.Blue = 255;
}
// write RGB triple to outfile
fwrite(&tripleout, sizeof(RGBTRIPLE), 1, outptr);
}
}
fclose(inptr);
fclose(outptr);
return 0;
}
/* To use compile: gcc -Wall -o check2 check2.c
After compiling
./check filename.bmp thresholdvalue
*/
c语言改变图片颜色,用c语言把bmp格式的彩色图片转换成黑白的相关推荐
- c语言 bmp白底黑字,用c语言把bmp格式的彩色图片转换成黑白的
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include typedef unsigned char BYTE; #define RGB 3.0 #defin ...
- c语言彩色图片转黑白,用c语言把bmp格式的彩色图片转换成黑白的
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include typedef unsigned char BYTE; #define RGB 3.0 #defin ...
- [css] 使用css将图片转换成黑白的效果
[css] 使用css将图片转换成黑白的效果 filter: saturate(0); 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主目录 与歌谣 ...
- 纯CSS将图片转换成黑白
纯CSS将图片转换成黑白 几行代码就可以实现!效果非常好! 1. 正常效果截图 鼠标悬停前后,分别示下: 2. 非正常效果截图:代码设置的不同,显示的效果不同! 比如:下面的设置导致图片效果不好! 参 ...
- 小tip: 使用CSS将图片转换成黑白(灰色、置灰)[转]
小tip: 使用CSS将图片转换成黑白(灰色.置灰) 这篇文章发布于 2012年08月19日,星期日,20:41,归类于 css相关, SVG相关. 阅读 159943 次, 今日 146 次 by ...
- C语言试题八十二之输入小写字母,把小写字母转换成大写字母。
1.题目 输入小写字母,把小写字母转换成大写字母. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中C程序设计科目.帮助C语言学者打好程序基础.C语言基础,锻炼您的逻辑思 ...
- 【图片流转成图片】vue处理后端传来的图片流信息并转换成图片显示在前端页面上【详细解释】
前言:今天遇到的后端传一个二维码图片给我,然后给我的是图片流的形式,看起来跟一堆乱码一样,根本用不了,必须要处理转换后才能使用,然后我看了网上帖子有的说的不是很明白,可能新人看不懂,我就也写一个详细解 ...
- 浅谈JavaScript和Canvas实现彩色图片转换成黑白图片
1.convertToGray() 在主体代码中使用 canvas 元素的id来获取画布,并设置画布的宽和高为图片的宽和高,再将上下文初始化为2d画布:彩色图片加载完成后,使用 drawImage() ...
- 怎么把CAD转换成图片格式?CAD快速转换成图片的方法
如何把CAD转换成图片格式?在我们平时的CAD工作中,有时候为了方便观看查阅,我们需要将CAD转换高清图片.这不,前几天公司有位实习生就因为不知道该如何转换,而被领导骂了一顿.由此可见,CAD转换图片 ...
最新文章
- mac os10.11上使用proxychains
- secureCRT连接问题
- [全文索引]非索引字表
- Docker 入门(Mac环境)- part 5 stacks
- python读取写入文件_Python文件读写保存操作
- SIP应答消息状态码与功能
- 天地图专题二:在天地图上循环显示标注点以及悬停显示信息窗口
- 更新fielddata为true_关于ElasticSearch的聚类时出现fielddata=true问题
- 权限设计=功能权限+数据权限
- 川土微电子|数字隔离器替代光耦817
- 2021道路运输企业主要负责人安全考核试题
- top1-Accuracy,top5-Accuracy举例精析
- OceanBase基本概念
- Pytorch torch.add() torch.add_() 用法
- let , const , var , 的区别
- 一款性能足够的4.5寸以下的手机
- mysql 索引代码_mysql索引
- Android微信SDK实现分享
- 全球及中国铁路行业十四五规划目标与投资建设状况分析报告2021版
- 纳米表征技术 2022.10.5