//功能:输入想要打马赛克的坐标点,宽,高以及每个边需要划分的块数进行打马赛克
//只能处理位图,根据不同色深定义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的更多相关文章

随机推荐

  1. Web应用网络模型

    Web应用网络模型 前言 这篇文章要介绍的是一个常见Web应用基本的过程跟网络模型,当然,对于多数的Client/Server应用也是适用的.延续这个系列文章的风格,只管通俗不管严谨. 概览 总体模型 ...

  2. 【FOL】第九周

    不知不觉又是三周过去了. 这几周忙了一下,其他时间全都在搞服务端,简直是酸爽的不行...不过还好出了些成果. 目前服务端有: 1.版本服务:游戏版本更新 2.账号服务:用户身份验证,返回各种连接(代理 ...

  3. jstl标签2

    我们前面讲的是ArrayList集合迭代,Hashmap/Hashset的情况下 举例: <h3>对map和set的迭代</h3> 放入字符串 <% //模拟 Map m ...

  4. 20款响应式的 HTML5 网页模板【免费下载】

    下面的列表集合了20款响应式的 HTML5 网页模板,这些专业的模板能够让你的网站吸引很多的访客.除了好看的外观,HTML5 模板吸引大家的另一个原因是由于其响应性和流动性.赶紧来看看. 您可能感兴趣 ...

  5. Popmotion – 小巧,灵活的 JavaScript 运动引擎

    Popmotion 是一个只有12KB的 JavaScript 运动引擎,可以用来实现动画,物理效果和输入跟踪.原生的DOM支持:CSS,SVG,SVG路径和DOM属性的支持,开箱即用.Popmoti ...

  6. JS Nice – JavaScript 代码美化和格式化工具

    JS Nice 是一款让经过混淆处理的 JavaScript 代码可读更好的工具.它使用一种新型的用于 JavaScript 代码美化的去混淆和去压缩引擎.JSNice 采用先进的机器学习和程序分析技 ...

  7. Web安全之点击劫持(ClickJacking)

    点击劫持(ClickJacking)是一种视觉上的欺骗手段.大概有两种方式,一是攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不知情的情况下点击透明的 ...

  8. Microsoft Dynamics CRM MVP

    MVP 一个响亮的名称, 不是 Kobe Bryant 不是 LeBron Raymone James 这是 Microsoft Dynamics CRM MVP 求证Link: http://mvp ...

  9. react native 学习资料整理

    入门教程 深入浅出 React Native:使用 JavaScript 构建原生应用 http://www.appcoda.com/react-native-introduction/  中文版 h ...

  10. List集合概述

    上篇总结了Set集合,这回总结下List集合....先来框架图: 一.List集合 List集合代表一个元素有序,可重复的集合,集合中每个元素都有对应的顺序索引.List接口中增加了一些根据索引操作元 ...