C语言实现对bmp格式图片打码

相信大家看到上面的标题一定觉的是上面高大上的技术,其实很简单。
前提准备:一张bmp格式的图片,如果没有的话,可以用Windows的画图软件来才裁剪。设置像素大小为(1024,768);
程序原理:将图片读入数组,然后给数组的指定位置存入随机数,最后再写入文件,这样图片就相应的位置就被置为乱码了。

源代码:

<span style="font-size:14px;">#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h> 

#define WIDTH  1024
#define HEIGHT 768
#define BPP 24
#define BYTES  (BPP / 8)
#define HEADER 54  

int main(int argc,char* argv[])
{
  int xoff,yoff,width,height;
  int fd;
  int i,j,k;
  int offset;
  unsigned char pix[BYTES];   

  if(argc!=6)
  {
    printf("Usage: %s filename xoff yoff width height\n",argv[0]);
    exit(EXIT_FAILURE);
  } 

  xoff=atoi(argv[2]);
  yoff=atoi(argv[3]);
  width=atoi(argv[4]);
  height=atoi(argv[5]); 

  xoff=HEIGHT -xoff;
  yoff=WIDTH - yoff; 

  fd=open(argv[1],O_WRONLY);
  if(fd==-1)
  {
    perror("open");
    exit(EXIT_FAILURE);
  } 

  for(i=xoff;i > xoff - height;i--)
  {
    for(j=yoff;j > yoff - width;j--)
    {
      offset = HEADER + (i * WIDTH -j )*BYTES;
      lseek(fd, offset, SEEK_SET);
      for(k=0; k<BYTES; k++)
      {
        pix[j] = random();
        write(fd ,&pix[j] ,1);
      }
    }
  }
  close(fd);
  return 0;
}</span>

输入格式:
参数解释: banner.bmp 是图片文件的文件名,100 100是打码的位置,500 500 是打码的大小。(注:源程序和文件名在同一文件夹下)

原始图片如下:

执行源程序过后,图片如下:

以上就是本文的全部内容,希望对大家学习C语言程序设计有所帮助。

(0)

相关推荐

  • c语言解析bmp图片的实例

    心血来潮想了解下常用图片的格式解析,翻看了一些资料后,发现最简单的是bmp格式,所以先拿它开刀. BMP格式 这种格式内的数据分为三到四个部分,依次是: 文件信息头 (14字节)存储着文件类型,文件大小等信息 图片信息头 (40字节)存储着图像的尺寸,颜色索引,位平面数等信息 调色板 (由颜色索引数决定)[可以没有此信息] 位图数据 (由图像尺寸决定)每一个像素的信息在这里存储 一般的bmp图像都是24位,也就是真彩.每8位为一字节,24位也就是使用三字节来存储每一个像素的信息,三个字节对应存放

  • C语言读取BMP图像数据的源码

    复制代码 代码如下: /* File name:   bmpTest.c   Author:      WanChuan XianSheng    Date:        Oct 01, 2011   Description: Show all Info a bmp file has. including    FileHeader Info, InfoHeader Info and Data Part. Reference: BMP图像数据的C语言读取源码*/ #include <stdio

  • C语言实现对bmp格式图片打码

    相信大家看到上面的标题一定觉的是上面高大上的技术,其实很简单. 前提准备:一张bmp格式的图片,如果没有的话,可以用Windows的画图软件来才裁剪.设置像素大小为(1024,768): 程序原理:将图片读入数组,然后给数组的指定位置存入随机数,最后再写入文件,这样图片就相应的位置就被置为乱码了. 源代码: <span style="font-size:14px;">#include<stdio.h> #include<stdlib.h> #incl

  • C语言实现BMP格式图片转化为灰度

    本文实例为大家分享了C语言将BMP格式图片转化为灰度的具体代码,供大家参考,具体内容如下 代码如下: #include<stdio.h> #include<malloc.h> #include<stdlib.h> #pragma pack(1) typedef struct tagBITMAPFILEHEADER { unsigned char bfType[2];//文件格式 unsigned long bfSize;//文件大小 unsigned short bfR

  • C语言读取和存储bmp格式图片

    开发过程中有时候需要解析bmp数据,下面先简单介绍bmp数据组成,后面附上C语言读取和存储bmp格式图片代码. 典型的位图文件格式通常包含下面几个数据块: 1.BMP文件头:保存位图文件的总体信息. 2.位图信息头:保存位图图像的详细信息.位图信息:保存位图图像的详细信息. 3.调色板:保存所用颜色的定义.调色板:保存所用颜色的定义. 4.位图数据:保存一个又一个像素的实际图像.位图数据:保存一个又一个像素的实际图像. 1. BMP文件头(14字节) BMP文件头数据结构含有BMP文件的类型.文

  • ASP语言实现对SQL SERVER数据库的操作

    目前管理信息系统已从传统的客户机/服务器(C/S)模式转向了浏览器/服务器(B/S)模式,特别是微软公司推出它的新产品ASP语言之后,这种转变更加迅猛.管理信息系统的核心是对数据库进行包括添加.修改和查询等等操作,ASP提供的ADO数据库接口控件,使得程序员再也勿需编写复杂的CGI程序了,而只要用几句简单的语句即可实现以上操作.1.系统环境 PII 350,Ram 64M,WINNT Server 4.0, Service Pack4, IIS 4.0, SQL Server7.0. 2.系统功

  • PHP处理bmp格式图片的方法分析

    本文分析了PHP处理bmp格式图片的方法.分享给大家供大家参考,具体如下: 白天QA提出项目上传图片有问题,具体为:上传成功,预览失败.我去了之后,又上传了几张其他的图片可以上传,然后仔细问了下他上传的是哪张图片,看了后使用getimagesize函数打印了下. Array ( [0] => 494 [1] => 260 [2] => 6 [3] => width="494" height="260" [bits] => 24 [mim

  • Android中把bitmap存成BMP格式图片的方法

    最近的项目,做图片的另存为功能,需要把图片存成jpg,png,bmp.对于jpg和png来说相对简单,android提供了bitmap.compress()方法可以马上解决.但是对于BMP这种格式,没有很好的支持.我花了几天时间在网上找了很久,都没有找到有用的答案,同样也发了疑问,没有合适的解答. package com.test.bitmap; import java.io.FileNotFoundException; import java.io.FileOutputStream; impo

  • Java语言实现对MySql数据库中数据的增删改查操作的代码

    简单说操作的步骤: 1.连接数据库 2.将SQL语句发送到数据库 3.执行SQL语句 这里举个例子: 在一个数据库中有个students表,表中有学号(Id),姓名(Name),性别(Sex),地址(Address),电话(Phone),专业(Dept). 这里把这个表写成一个学生信息类(Info_student) (请先确保看了例子说明,不然代码有的地方可能看不明白) 要实现操纵我们首先得连接数据库,因为每个操作都要进行连接操作,所以我们直接把连接的操作封装在一个类中,需要连接的时候直接调用可

  • 关于图片存储格式的整理(BMP格式介绍)

    BMP BMP(全称Bitmap)是Window操作系统中的标准图像文件格式 可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广. 它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大.BMP文件的图像深度可选lbit.4bit.8bit及24bit.BMP文件存储数据时,图像的扫描方式是按从左到右.从下到上的顺序.由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都

  • C# 基于NAudio实现对Wav音频文件剪切(限PCM格式)

    目录 前言 实现代码 效果图 前言 C#基于NAudio工具对Wav音频文件进行剪切,将一个音频文件剪切成多个音频文件 注:调用方法前需要导入NAudio.dll或者在NuGet程序管理器搜索NAudio并安装 本文是按时间剪切 实现代码 using NAudio.Wave; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Ta

  • C语言如何读取bmp图像

    目录 1.BMP图像编码 2.读取BMP文件 1.BMP图像编码 BMP即bitmap,也就是位图,一般由4部分组成:文件头信息块.图像描述信息块.颜色表(在真彩色模式无颜色表)和图像数据区. 在图像数据之前,如图所示,共有54位数据 其中,0x424d在十进制为19778,对应的ASCII码为BM,表示这是个bitmap文件. 在C语言中,short类型为16位,即2字节:int为4字节.考虑到BMP格式的文件头中,每个信息基本都是2字节的倍数,故而用int和short便可描述出bmp格式的文

随机推荐