该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#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格式的彩色图片转换成黑白的相关推荐

  1. c语言 bmp白底黑字,用c语言把bmp格式的彩色图片转换成黑白的

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include typedef unsigned char BYTE; #define RGB 3.0 #defin ...

  2. c语言彩色图片转黑白,用c语言把bmp格式的彩色图片转换成黑白的

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include typedef unsigned char BYTE; #define RGB 3.0 #defin ...

  3. [css] 使用css将图片转换成黑白的效果

    [css] 使用css将图片转换成黑白的效果 filter: saturate(0); 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主目录 与歌谣 ...

  4. 纯CSS将图片转换成黑白

    纯CSS将图片转换成黑白 几行代码就可以实现!效果非常好! 1. 正常效果截图 鼠标悬停前后,分别示下: 2. 非正常效果截图:代码设置的不同,显示的效果不同! 比如:下面的设置导致图片效果不好! 参 ...

  5. 小tip: 使用CSS将图片转换成黑白(灰色、置灰)[转]

    小tip: 使用CSS将图片转换成黑白(灰色.置灰) 这篇文章发布于 2012年08月19日,星期日,20:41,归类于 css相关, SVG相关. 阅读 159943 次, 今日 146 次 by ...

  6. C语言试题八十二之输入小写字母,把小写字母转换成大写字母。

    1.题目 输入小写字母,把小写字母转换成大写字母. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中C程序设计科目.帮助C语言学者打好程序基础.C语言基础,锻炼您的逻辑思 ...

  7. 【图片流转成图片】vue处理后端传来的图片流信息并转换成图片显示在前端页面上【详细解释】

    前言:今天遇到的后端传一个二维码图片给我,然后给我的是图片流的形式,看起来跟一堆乱码一样,根本用不了,必须要处理转换后才能使用,然后我看了网上帖子有的说的不是很明白,可能新人看不懂,我就也写一个详细解 ...

  8. 浅谈JavaScript和Canvas实现彩色图片转换成黑白图片

    1.convertToGray() 在主体代码中使用 canvas 元素的id来获取画布,并设置画布的宽和高为图片的宽和高,再将上下文初始化为2d画布:彩色图片加载完成后,使用 drawImage() ...

  9. 怎么把CAD转换成图片格式?CAD快速转换成图片的方法

    如何把CAD转换成图片格式?在我们平时的CAD工作中,有时候为了方便观看查阅,我们需要将CAD转换高清图片.这不,前几天公司有位实习生就因为不知道该如何转换,而被领导骂了一顿.由此可见,CAD转换图片 ...

最新文章

  1. mac os10.11上使用proxychains
  2. secureCRT连接问题
  3. [全文索引]非索引字表
  4. Docker 入门(Mac环境)- part 5 stacks
  5. python读取写入文件_Python文件读写保存操作
  6. SIP应答消息状态码与功能
  7. 天地图专题二:在天地图上循环显示标注点以及悬停显示信息窗口
  8. 更新fielddata为true_关于ElasticSearch的聚类时出现fielddata=true问题
  9. 权限设计=功能权限+数据权限
  10. 川土微电子|数字隔离器替代光耦817
  11. 2021道路运输企业主要负责人安全考核试题
  12. top1-Accuracy,top5-Accuracy举例精析
  13. OceanBase基本概念
  14. Pytorch torch.add() torch.add_() 用法
  15. let , const , var , 的区别
  16. 一款性能足够的4.5寸以下的手机
  17. mysql 索引代码_mysql索引
  18. Android微信SDK实现分享
  19. 全球及中国铁路行业十四五规划目标与投资建设状况分析报告2021版
  20. 纳米表征技术 2022.10.5

热门文章

  1. uva 10977 Enchanted Forest 魔幻森林
  2. 计算机考研数学考数学二的专业,2018考研数学:过来人教你如何数学二考到130!...
  3. 申请清华大学计算机类的理由,青年人选择清华的七个理由
  4. centos7加载磁盘
  5. 微信内置浏览器API的常用的js方法
  6. Dubbo学习之DubboService
  7. mybatis-plus,sgg,杨bochao
  8. 在Scrum中添加目标与合弄制
  9. Python案例—AQI 空气质量指数
  10. Gald to meet you