新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> We choose to study algorithmic problems,  not because they are easy,  but because they are hard.
    [返回] 计算机科学论坛计算机理论与工程『 算法理论与分析 』 → [转帖]古代帝国中的图片资源节省算法 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6300 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [转帖]古代帝国中的图片资源节省算法 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     wcdxyl 帅哥哟,离线,有人找我吗?天秤座1980-10-9
      
      
      威望:4
      等级:大四(每天看1小时莱昂氏)(版主)
      文章:158
      积分:1145
      门派:IEEE.ORG.CN
      注册:2006/3/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wcdxyl发送一个短消息 把wcdxyl加入好友 查看wcdxyl的个人资料 搜索wcdxyl在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wcdxyl的博客楼主
    发贴心情 [转帖]古代帝国中的图片资源节省算法

    代码:

    /**
    * 图片转换
    * @param content 原始图片信息
    * @param type 类型,1 :中立角色 2 : 敌方 0 :自己
    */
    public static void imgConvert(byte content[], int type){
    try{
    int pos = 33;
    int relpos = 0;
    relpos = ((content[pos] & 0xff) << 24 | (content[pos + 1] & 0xff) << 16 | (content[pos + 2] & 0xff) << 8 | content[pos + 3] & 0xff) & -1;
    pos += 4;
    int newcolor = -1;
    for(int idx = 0; idx < 4; idx++)
    newcolor = pixelConvert(content[pos + idx], newcolor);

    pos += 4;
    boolean flag = true;
    boolean flag1 = false;
    boolean flag2 = false;
    for(int idx = pos; idx < pos + relpos; idx += 3){
    int b = content[idx] & 0xff;
    int g = content[idx + 1] & 0xff;
    int r = content[idx + 2] & 0xff;
    if(r > b && r > g){
    //绿色和蓝色互换,中立角色
    if(type == 1){
    int tmp = b;
    b = g;
    r = b;
    g /= 2;
    }
    //转换为红色,敌人角色
    else if (type == 2){
    b = r;
    g = r;
    }
    content[idx] = (byte)b;
    content[idx + 1] = (byte)g;
    content[idx + 2] = (byte)r;
    }
    newcolor = pixelConvert(content[idx], newcolor);
    newcolor = pixelConvert(content[idx + 1], newcolor);
    newcolor = pixelConvert(content[idx + 2], newcolor);
    }

    newcolor = ~newcolor;
    int actpos = 41 + relpos;
    content[actpos] = (byte)(newcolor >> 24);
    content[actpos + 1] = (byte)(newcolor >> 16);
    content[actpos + 2] = (byte)(newcolor >> 8);
    content[actpos + 3] = (byte)newcolor;
    }
    catch(Exception e){}
    }

    /**
    * 像素转换
    * @param pixel 像素
    * @param color 颜色值
    * @return
    */
    public static int pixelConvert(byte pixel, int color){
    int tmp = pixel & 0xff;
    color ^= tmp;
    for(int idx = 0; idx < 8; idx++)
    if((color & 1) != 0)
    //土黄色
    color = color >>> 1 ^ 0xedb88320;
    else
    color >>>= 1;
    return color;
    }

    效果图如下
    原始图


    用代码进行转换的效果图


    注意 :为了能让你的程序实现转换更简单,也就是说你怎么知道要变换那些颜色值。例如上面说的转换条件为:
    r > b && r > g

    所以一张图片的设计,像素的取舍需要跟美工配合好,需要画什么样的图片,以及需要转换的像素点。也可见MacroSpace中美工和程序是紧密地结合在一起的,做到了代码实现更方便以及用代码来节省图片资源。


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    主页:http://wcdxyl.blogchina.com
    MSN:wcdxyl@163.com

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/3/20 13:55:00
     
     maxc2000 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:13
      积分:115
      门派:XML.ORG.CN
      注册:2006/3/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给maxc2000发送一个短消息 把maxc2000加入好友 查看maxc2000的个人资料 搜索maxc2000在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看maxc2000的博客2
    发贴心情 
    看不到图啊。。。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/3/20 19:05:00
     
     wcdxyl 帅哥哟,离线,有人找我吗?天秤座1980-10-9
      
      
      威望:4
      等级:大四(每天看1小时莱昂氏)(版主)
      文章:158
      积分:1145
      门派:IEEE.ORG.CN
      注册:2006/3/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wcdxyl发送一个短消息 把wcdxyl加入好友 查看wcdxyl的个人资料 搜索wcdxyl在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wcdxyl的博客3
    发贴心情 
    帖子上好像不能放图片,这篇文章的关键也不在于图片。关键是告诉大家在处理图片的时候不必调用一张整图,而是可以分解图的颜色和结构来组合完成,这样可以更节约磁盘空间和内存消耗。这是一种思路,希望能对大家在开发高性能的程序时有所帮助。

    ----------------------------------------------
    主页:http://wcdxyl.blogchina.com
    MSN:wcdxyl@163.com

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/3/28 14:15:00
     
     abin21 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:67
      门派:XML.ORG.CN
      注册:2006/2/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给abin21发送一个短消息 把abin21加入好友 查看abin21的个人资料 搜索abin21在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看abin21的博客4
    发贴心情 
    注意不错
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/4/9 20:48:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 算法理论与分析 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/27 3:24:51

    本主题贴数4,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    4,624.023ms