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 ...
- 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 ...
- php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...
- php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!
php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...
- php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!编辑
php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...
- mysql longblob 转换_php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!...
php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...
最新文章
- 剑指offer:面试题41. 数据流中的中位数
- Linux Shell 命令--grep
- 【LeetCode 502】IPO
- 使用MemberShip,Profile时碰上的一些问题
- iOS开发 蓝牙技术4.0详解
- 详细剖析linux的内存管理方式(分段式、分页式、段页式),以及进程状态的具体关系
- linux块设备驱动编写,Linux内核学习笔记 -49 工程实践-编写块设备驱动的基础
- python3+requests接口自动化-其他接口封装
- python2.7安装教程win7_win7下python2.7安装 pip,setuptools的正确方法
- uni-app -- 小程序添加激励视频(字节-抖音小程序)
- 史上最全 Vue 前端代码风格指南
- 免费制作在线网站教程
- 十年技术支持工作的几点感悟
- 【画方】画方网络准入管理系统
- C语言学习笔记(四)
- 京东数科前端春招面经
- 朝鲜APT组织使用带后门IDA软件攻击安全研究人员
- 移动设备网页中快速响应单击动作
- orb-slam3安装编译运行。opencv3.2 undefined reference to `cblas_zgemm vgg_generated_48.i ippicv_linux_20151
- 浅谈汽车和交通设备行业的aps软件解决方案