查看: 5055|回复: 2

[原创发布] bitmap的人物生成器

[复制链接]
梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
回帖
1464
发表于 2015-12-6 14:45:50 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 汪汪 于 2015-12-6 14:52 编辑

[fold=人物生成器
大概就是类似mv的人物生成器  

大概挺没用的
光设置就让人会疯的吧
目前这个大概算是个核心吧.....
]


[pre lang="javascript" file="ww_makeRenwu.js"]//=============================================================================
// ww_makeRenwu.js
//=============================================================================
/*:
* @plugindesc 人物生成
* @author wangwang
*
*
* @help
* 使用方法 bitmap = Bitmap.makeRenwu(badds)
*
*
* 参数设置 解释):
*    badds = [ ] 数组
*    图片的宽和高(必填)
*          badds.width=144;
*          badds.height=192;
*      数组内的是一个个对象 {}
*      对象设置:
*                bitmap:"E:/rpgmv/Project1/img/1.png"  //基础文件 路径
*                change:[ ]    //基础文件修改 数组
*                bitmap_c:"E:/rpgmv/Project1/img/2.png",  //判定修改文件
*                change_c:[]   //基于判定文件的修改 数组
*      change 内的是一个个修改方式对象{}
*             对象设置 修改模式
*             hsla:{h:100,s:10,l:10,a:0}
*                 HSL色彩模式修改(增加值),h色相(360度循环)、s饱和度(255)、l明度(255) a不透明度(255)
*             rgba:{r:0,g:10,b:20,a:26}
*                 RGB颜色模式修改(增加值),r红色(255) g绿色(255) b蓝色(255) a不透明度(255)
*             可只输入部分 如   hsla:{h:100}   , {rgba:{r:100}  
*      change_c  内的是一个个修改方式对象{}
*              对象必须设置判定条件 ,可以设置修改模式
*              
*              判定条件 :
*                   pd:{r:199,g:132,b:7,a:255} 当是这个颜色时修改基础文件
*              可只输入部分 如  pd:{r:199}  
*              举例 { pd:{r:199,g:132,b:7,a:255} ,  hsla:{h:100} }  
*
*   
*    举例:
*              badds=[
*                {  bitmap:"E:/rpgmv/Project1/img/1.png",
*                   change:[],
*                   bitmap_c:"E:/rpgmv/Project1/img/2.png",
*                   change_c:[ {pd:{r:199,g:132,b:7}, hsla:{h:100}},],
*                }
*                ];
*          badds.width=144;
*          badds.height=192;
*
*
*
*/




(function() {




        Bitmap.makeRenwu = function (badds) {
                if ( badds.length > 0){
                        var bitmap = new Bitmap(badds.width,badds.height)
                        bitmap.badds=[]
                }else{
                        var bitmap = new Bitmap()
                        return bitmap
                }
                bitmap.badds.loading = true
                for (var i =0; i<badds.length ;i++){
                        if (badds){
                              bitmap.badds ={};
                                if (badds.bitmap){
                            bitmap.badds.bitmap = Bitmap.load( badds.bitmap )
                                        bitmap.badds.bitmap.addLoadListener(
                                            function() {
                                                    if(bitmap.isok(bitmap.badds)){ bitmap.makeRenwu2()}
                                                }
                                        );
                                        if (badds.change){
                                                bitmap.badds.change = badds.change
                                        }
                                        if (badds.bitmap_c && badds.change_c){
                                                bitmap.badds.change_c = badds.change_c
                                    bitmap.badds.bitmap_c = Bitmap.load( badds.bitmap_c )
                                                bitmap.badds.bitmap_c.addLoadListener(
                                                    function() {
                                                            if(bitmap.isok()){ bitmap.makeRenwu2()}
                                                        }
                                                );
                                        }
                                }
                        }
                }
                bitmap.badds.loading = false
                if(bitmap.isok()){ bitmap.makeRenwu2()}
                return bitmap;
        }

        Bitmap.prototype.isok =function (){
                var badds = this.badds
                if (badds.loading){return false}
                for (var i=0 ; i< badds.length;i++ ){
                    if (badds){
                                if (badds.bitmap &&  badds.bitmap._isLoading ){return false}
                                if (badds.bitmap_c &&  badds.bitmap_c._isLoading){return  false}
                        }
            }
                return true
        }

       
        Bitmap.prototype.makeRenwu2=function () {
                var badds = this.badds
                for (var i=0 ; i< badds.length;i++ ){
                        if (badds){
                                if (badds.bitmap) {
                                        if (badds.change){
                                                badds.bitmap.bitmap_change(badds.change )
                                    }
                                    if (badds.bitmap_c &&  badds.change_c){
                                            badds.bitmap.bitmap_change_c(badds.bitmap_c,badds.change_c )
                                    }
                                    this.blt(badds.bitmap,
                                        0,0,badds.bitmap.width,badds.bitmap.height,
                                        0,0,this.width,this.height)
                                }
                        }
                       
                }
        }



        Bitmap.prototype.bitmap_change = function(change) {
        var change = change
            if ( change.length > 0 && this.width > 0 && this.height > 0) {
                var context = this._context;
                var imageData = context.getImageData(0, 0, this.width, this.height);
                var pixels = imageData.data;
                for (var i = 0; i < pixels.length; i += 4) {
                var rgba = [pixels[i +0],pixels[i +1],pixels[i +2], pixels[i +3]]
                rgba = Bitmap.rgba_change(rgba,change)
                    pixels[i + 0] = rgba[0];
                    pixels[i + 1] = rgba[1];
                    pixels[i + 2] = rgba[2];
                    pixels[i + 3] = rgba[3];
                }
                context.putImageData(imageData, 0, 0);
                this._setDirty();
            }
        };


        Bitmap.prototype.bitmap_change_c = function(bitmap_c,change_c) {
        var change = change_c
        var bitmap = bitmap_c
            if ( change && bitmap  && change.length > 0  &&  
                    bitmap.width>0 && bitmap.height>0  &&
                    this.width > 0 && this.height > 0) {
                var context = this._context;
                
            var width = this.width > bitmap.width ? bitmap.width : this.width
                var height = this.height > bitmap.height ? bitmap.height : this.height
                
                var imageData = context.getImageData(0, 0, width, height);
                var imageData_c = bitmap.context.getImageData(0, 0, width, height);
                var pixels = imageData.data;
            var pixels_c = imageData_c.data;
                
                for (var i = 0; i < pixels_c.length; i += 4) {
                        var rgba_c = [pixels_c[i +0],pixels_c[i +1],pixels_c[i +2], pixels_c[i +3]]
                var rgba = [pixels[i +0],pixels[i +1],pixels[i +2], pixels[i +3]]
                rgba = Bitmap.rgba_change2(rgba,rgba_c,change)
                    pixels[i + 0] = rgba[0];
                    pixels[i + 1] = rgba[1];
                    pixels[i + 2] = rgba[2];
                    pixels[i + 3] = rgba[3];
                }
                context.putImageData(imageData, 0, 0);
                this._setDirty();
            }
        };
       
    Bitmap.rgba_change = function (rgba,change) {
            var rgba = rgba
            var change = change
            for (var i =0 ; i<change.length;i++){
                    if (change){
                            if (change.rgba ){
                                    rgba = Bitmap.rgba_Rgba_change(rgba,
                                            change.rgba.r,
                                            change.rgba.g,
                                            change.rgba.b,
                                            change.rgba.a
                                        )
                            }
                            if (change.hsla){
                                    rgba = Bitmap.rgba_Hsla_change(rgba,
                                            change.hsla.h,
                                            change.hsla.s,
                                            change.hsla.l,
                                            change.hsla.a
                                        )
                            }
                        }
            }
        return rgba;
    }
   
    Bitmap.rgba_change2 = function (rgba,rgba_c,change) {
            var rgba = rgba
            var rgba_c = rgba_c
            var change = change
            for (var i =0 ; i<change.length;i++){
                    if (change){
                            if (change.pd && Bitmap.rgba_change_pd(rgba_c,change.pd) ){
                                    if (change.rgba ){
                                            rgba = Bitmap.rgba_Rgba_change(rgba,
                                                    change.rgba.r,
                                                    change.rgba.g,
                                                    change.rgba.b,
                                                    change.rgba.a
                                                )
                                    }
                                    if (change.hsla){
                                            rgba = Bitmap.rgba_Hsla_change(rgba,
                                                    change.hsla.h,
                                                    change.hsla.s,
                                                    change.hsla.l,
                                                    change.hsla.a
                                                )
                                    }
                            }
                    }
            }
        return rgba;
    }

       

    Bitmap.rgba_change_pd = function (rgba,pd) {
            if (isFinite(pd.r) && rgba[0] != pd.r ){ return false }
            if (isFinite(pd.g) && rgba[1] != pd.g ){ return false }
            if (isFinite(pd.b) && rgba[2] != pd.b ){ return false }
            if (isFinite(pd.a) && rgba[3] != pd.a ){ return false }
        return true;
    }
   
    Bitmap.rgba_Rgba_change = function (rgba,r,g,b,a) {
            if (r){ rgba[0] = (rgba[0] + r).clamp(0,255)}
        if (g){ rgba[1] = (rgba[1] + g).clamp(0,255)}
        if (b){ rgba[2] = (rgba[2] + b).clamp(0,255)}
        if (a){ rgba[3] = (rgba[3] + a).clamp(0,255)}
        return [rgba[0],rgba[1], rgba[2],rgba[3]];
    }
   
   
    Bitmap.rgba_Hsla_change = function (rgba ,h,s,l,a) {
            var hsl = Bitmap.rgbToHsl(rgba[0], rgba[1], rgba[2]);
            if (h){ hsl[0] = (((hsl[0] + h)% 360)+360)%360}
        if (s){ hsl[1] = (hsl[1] + s).clamp(0,255)}
        if (l){ hsl[2] = (hsl[2] + l).clamp(0,255)}
        if (a){ rgba[3] = (rgba[3] + a).clamp(0,255)}
                var rgb = Bitmap.hslToRgb(hsl[0], hsl[1], hsl[2]);
                return [rgb[0],rgb[1], rgb[2],rgba[3]]
    }


    Bitmap.rgbToHsl = function (r, g, b) {
        var cmin = Math.min(r, g, b);
        var cmax = Math.max(r, g, b);
        var h = 0;
        var s = 0;
        var l = (cmin + cmax) / 2;
        var delta = cmax - cmin;
        if (delta > 0) {
            if (r === cmax) {
                h = 60 * (((g - b) / delta + 6) % 6);
            } else if (g === cmax) {
                h = 60 * ((b - r) / delta + 2);
            } else {
                h = 60 * ((r - g) / delta + 4);
            }
            s = delta / (255 - Math.abs(2 * l - 255)) * 255  ;
        }
        return [h, s, l];
    }
   
    Bitmap.hslToRgb =function (h, s, l) {
        var c = (255 - Math.abs(2 * l - 255)) * s / 255;
        var x = c * (1 - Math.abs((h / 60) % 2 - 1));
        var m = l - c / 2;
        var cm = c + m;
        var xm = x + m;
        if (h < 60) {
            return [cm, xm, m];
        } else if (h < 120) {
            return [xm, cm, m];
        } else if (h < 180) {
            return [m, cm, xm];
        } else if (h < 240) {
            return [m, xm, cm];
        } else if (h < 300) {
            return [xm, m, cm];
        } else {
            return [cm, m, xm];
        }
    }


})();

[/pre]





[/fold]


示例:
BaiduShurufa_2015-12-6_13-44-1.png
BaiduShurufa_2015-12-6_14-44-51.png
jietu2015126143631807.png
然而有谁能把图层排列一下...
jietu2015126145110469.png

评分

参与人数 1梦石 +1 收起 理由
余烬之中 + 1 的确是研究过的样子 然而用处似乎不大.

查看全部评分

梦石
0
星屑
57
在线时间
103 小时
注册时间
2015-11-30
回帖
28
发表于 2015-12-6 23:49:54 | 显示全部楼层
这意思是vx的素材可以直接用到mv里了?
回复

使用道具 举报

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
回帖
1464
 楼主| 发表于 2015-12-7 08:07:25 | 显示全部楼层
ytqlovehjl 发表于 2015-12-6 23:49
这意思是vx的素材可以直接用到mv里了?

不是……vx和mv素材之间是大小的问题,这个是类似纸娃娃的的东西
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部