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

#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. c语言彩色图片转黑白,用c语言把bmp格式的彩色图片转换成黑白的

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

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

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

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

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

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

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

  7. php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串

    php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...

  8. php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!

    php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...

  9. php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!编辑

    php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...

  10. mysql longblob 转换_php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!...

    php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...

最新文章

  1. 剑指offer:面试题41. 数据流中的中位数
  2. Linux Shell 命令--grep
  3. 【LeetCode 502】IPO
  4. 使用MemberShip,Profile时碰上的一些问题
  5. iOS开发 蓝牙技术4.0详解
  6. 详细剖析linux的内存管理方式(分段式、分页式、段页式),以及进程状态的具体关系
  7. linux块设备驱动编写,Linux内核学习笔记 -49 工程实践-编写块设备驱动的基础
  8. python3+requests接口自动化-其他接口封装
  9. python2.7安装教程win7_win7下python2.7安装 pip,setuptools的正确方法
  10. uni-app -- 小程序添加激励视频(字节-抖音小程序)
  11. 史上最全 Vue 前端代码风格指南
  12. 免费制作在线网站教程
  13. 十年技术支持工作的几点感悟
  14. 【画方】画方网络准入管理系统
  15. C语言学习笔记(四)
  16. 京东数科前端春招面经
  17. 朝鲜APT组织使用带后门IDA软件攻击安全研究人员
  18. 移动设备网页中快速响应单击动作
  19. orb-slam3安装编译运行。opencv3.2 undefined reference to `cblas_zgemm vgg_generated_48.i ippicv_linux_20151
  20. 浅谈汽车和交通设备行业的aps软件解决方案

热门文章

  1. 工业大数据白皮书(2019版)
  2. Chrome导出扩展程序
  3. html怎么写海贼王旗帜图片,海贼王精美旗帜套图
  4. ssh-keygen的使用方法
  5. 【关于win10任务栏卡死的解决】
  6. 那些年你用过的工具--网络工具Wireshark经验谈
  7. btrfs管理及应用
  8. 数据结构——绪论、时间复杂度
  9. 了解一下Windows Cracker
  10. 题解 CF32C 【Flea】