my_mosaic
//功能:输入想要打马赛克的坐标点,宽,高以及每个边需要划分的块数进行打马赛克
//只能处理位图,根据不同色深定义depth即可
//还没写从文件头读取图片分辨率
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#define depth 4
static int mask(char(*pic)[600*depth],
const int x,const int y,const int w,const int h){
int i=0,j=0,q=0;
//存储色块的颜色
char color_std[depth];
for(q=0;q<depth;q++){
color_std[q]=pic[y][depth*x+q];
}
for(j=y;j<y+h;j++){
for(i=depth*x;i<depth*x+w*depth;i+=depth){
for(q=0;q<depth;q++){
pic[j][i+q]=color_std[q];
}
}
}
}
int reg(char* filename,const int x,\
const int y,const int w,const int h,const int num){
int fd=open(filename,O_RDWR);
lseek(fd,54,SEEK_SET);
int i=0,j=0,q=0,p=0;
char pic[450][600*depth];
read(fd,pic,sizeof(pic));
//计算需要画图的点和区域
for(j=y;j<y+h-1;j+=h/num){
for(i=x;i<x+w-1;i+=(w/num)) {
mask(pic,i,j,w/num,h/num);
}
}
lseek(fd,54,SEEK_SET);
write(fd,pic,sizeof(pic));
close(fd);
}
int main(int argc, const char *argv[])
{
int x=atoi(argv[1]);
int y=atoi(argv[2]);
int w=atoi(argv[3]);
int h=atoi(argv[4]);
int n=atoi(argv[5]);
reg("./image",/*W,H,*/x,y,w,h,n);
return 0;
}


my_mosaic的更多相关文章
随机推荐
- Verilog学习笔记简单功能实现(六)...............计数分频电路
在分频器电路中最重要的概念有两个:1)奇分频/偶分频:2)占空比. A)其中最简单的就是二分频电路,占空比为50%,其Verilog程序为 module half_clk(clr,clk_in,clk ...
- python打印进度条
import sys,time第一种方法: for i in range(50): sys.stdout.write("#") time.sleep(0.1) sys.stdout ...
- 《高可用MySQL》1 – Windows环境下压缩版MySQL安装
近日在读O’REILIY系列的<高可用MySQL>, 自然少不了主从(Master-Slave)配置和横向扩展相关的内容.Master-Slave这东西吧,在许多公司都是标配,开发中基本天 ...
- spring mvc WebArgumentResolver不生效
WebArgumentResolver: SPI for resolving custom arguments for a specific handler method parameter. Typ ...
- jPList – 实现灵活排序和分页功能的 jQuery 插件
jPList 是一个灵活的 jQuery 插件,可以用于任何 HTML 结构的排序,分页和筛选.它支持的数据源包括:PHP + MySQL,ASP.NET + SQL Server,PHP + SQL ...
- 关于处理addGiftmoneyAction接口报错问题的总结
昨天UniUser中AddGiftmoneyAction接口在被调用时抛出异常,曾哥让我来解决这个问题,虽然最后查出是路径问题,但是由于解决问题 的思路不够清晰,导致浪费了大量的时间和精力,也没有给出 ...
- 【初窥javascript奥秘之事件机制】论“点透”与“鬼点击”
前言 最近好好的研究了一番移动设备的点击响应速度,期间不断的被自己坑,最后搞得焦头烂额,就是现在可能还有一些问题,但是过程中感觉自己成长不少, 最后居然感觉对javascript事件机制有了更好的认识 ...
- JavaScript基础19——innerHTML示例
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- VMware Data Recovery备份恢复vmware虚拟机
VMware Data Recovery 是VMware虚拟机备份工具,可创建虚拟机备份,同时不会中断虚拟机的使用或虚拟机提供的数据和服务.Data Recovery 管理现有备份,并在这些备份过时后 ...
- 什么时候用Application的Context,什么时候用Activity的Context
单例模式用application的context 如果我们在Activity A中或者其他地方使用Foo.getInstance()时,我们总是会顺手写一个『this』或者『mContext』(这个变 ...