手机游戏中怎么把多张png图片合并成一张??

zzz_boYS 2010-08-25 09:16:19
爱爱爱
...全文
666 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyan_ABS 2010-10-21
  • 打赏
  • 举报
回复
太强大了....这么多
杨贝 2010-10-08
  • 打赏
  • 举报
回复
可以用mapWin
zhangqi2009jiayou 2010-10-08
  • 打赏
  • 举报
回复
ps................................
whanly 2010-09-26
  • 打赏
  • 举报
回复
要不你讲屏幕分成几个部分用setClip,然后在这几个地方分别绘上你需要图片的地方。
cuglgeegee 2010-09-25
  • 打赏
  • 举报
回复
new一个新的image,然后取这个image的graphics,再把那些图都用这个graphics贴到这个image上,就算合并了吧
whanly 2010-09-12
  • 打赏
  • 举报
回复
这是原来J2ME雷电游戏找的代码,下面的是加载手机地图,是由几个小png图片组合而成的。
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

public class Map {

private static final int TOTAL_ROW=50;
private static final int TOTAL_COL=6;
private static final int CELL_H=32;
private static final int CELL_W=32;
private int scnH;
private int scnW;
public TiledLayer mapLayer;
private Image imgLevel1;
private Image imgLevel2;
private Image imgLevel3;
private Image imgLevel4;
private int[][] curArray;
private int mapHeight;
private MyCanvas myCanvas;
public int scrollSpeed=1;
public int curX;
public int curY;
public boolean bossMaked;


private int[][] level1Array={
{1,1,1,1,1,1},
{1,1,1,1,1,1},
{1,1,1,1,1,1},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{1,1,0,0,1,1},
{4,1,0,0,1,3},
{6,1,0,0,1,5},
{6,1,0,0,1,5},
{6,1,0,0,1,5},
{6,1,0,0,1,5},
{8,1,0,0,1,7},
{0,0,1,0,1,1},
{0,0,0,0,0,0},
{2,0,1,0,0,0},
{3,4,2,0,0,0},
{5,6,0,1,0,0},
{5,8,0,0,0,0},
{8,0,0,0,0,0},
{0,0,0,0,2,0},
{0,0,0,1,3,4},
{4,2,1,3,9,8},
{7,4,3,9,8,0},
{2,7,9,6,0,2},
{0,1,7,8,2,0},
{0,0,1,0,0,0},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{1,1,1,1,1,1},
{3,4,1,1,3,4},
{7,8,1,1,7,8},
{1,1,1,1,1,1},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{0,0,0,3,4,0},
{0,0,0,5,9,4},
{1,1,0,7,9,9},
{3,4,0,0,7,8},
{5,6,0,0,0,0},
{9,8,0,0,0,0},
{8,2,0,0,0,0},
{0,0,0,0,0,0},
{0,1,3,4,1,0},
{0,1,5,6,1,0},
{0,1,5,6,1,0},
{0,1,5,6,1,0},
{0,1,5,6,1,0},
{0,1,5,6,1,0}
};
private int[][] level2Array={
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{9,9,9,9,9,9},
{1,2,9,1,2,0},
{5,6,9,5,6,0},
{9,9,9,9,9,9},
{1,2,9,1,2,0},
{5,6,9,5,6,0},
{9,9,9,9,9,9},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{9,0,0,0,0,0},
{0,1,2,0,0,0},
{1,7,7,2,8,0},
{3,7,7,7,2,0},
{3,7,7,7,6,0},
{5,7,7,6,0,0},
{0,5,6,0,0,0},
{0,0,0,0,9,0},
{0,0,0,0,0,1},
{0,0,0,9,1,7},
{0,0,0,0,3,7},
{0,0,9,0,5,7},
{0,0,0,0,0,5},
{0,0,0,0,0,0},
{0,0,1,2,0,0},
{0,0,5,6,8,0},
{0,0,0,0,0,0},
{9,0,0,0,0,0},
{2,9,0,0,0,0},
{7,2,0,0,0,0},
{7,6,0,0,0,0},
{6,0,0,0,0,0},
{0,0,0,0,0,8},
{0,0,0,0,1,2},
{0,0,0,0,3,4},
{0,9,0,8,5,7},
{0,0,0,0,8,5},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{9,9,1,2,9,9},
{0,9,3,4,9,0},
{0,9,3,4,9,0},
{0,9,3,4,9,0},
{0,9,3,4,9,0}
};
private int[][] level3Array={
{5,7,8,8,7,5},
{5,6,0,0,6,5},
{8,7,1,0,7,8},
{0,0,0,0,0,0},
{0,1,0,0,0,0},
{0,0,0,0,1,0},
{0,1,1,0,0,0},
{0,0,0,0,0,0},
{9,9,9,2,0,0},
{0,0,2,2,0,0},
{0,0,2,9,9,9},
{0,0,2,2,1,0},
{9,9,9,2,0,0},
{0,0,2,2,0,0},
{0,0,2,9,9,9},
{0,0,0,0,0,0},
{8,7,0,1,7,8},
{0,6,0,0,6,0},
{8,6,8,8,6,8},
{0,6,0,0,6,0},
{8,6,8,8,6,8},
{0,6,0,0,6,0},
{8,7,0,0,7,8},
{0,1,0,0,1,0},
{0,1,0,0,0,0},
{5,0,1,0,0,5},
{5,5,0,0,5,5},
{5,5,5,5,5,5},
{5,5,5,5,5,5},
{5,5,0,0,5,5},
{5,0,0,0,0,5},
{0,0,0,0,0,0},
{0,0,0,1,0,0},
{0,0,0,0,0,0},
{4,3,0,0,3,4},
{2,9,0,0,9,2},
{2,9,0,0,9,2},
{2,9,1,0,9,2},
{2,9,0,0,9,2},
{2,9,0,1,9,2},
{4,3,0,0,3,4},
{0,0,0,0,0,0},
{0,1,0,0,0,0},
{0,0,0,0,0,0},
{0,0,0,1,0,0},
{0,0,7,7,0,0},
{0,1,6,6,1,0},
{0,0,6,6,0,0},
{0,0,6,6,1,0},
{0,0,6,6,0,0}
};
private int[][] level4Array={
{0,5,9,9,6,0},
{0,0,5,6,0,0},
{0,8,0,0,0,8},
{0,0,0,0,0,0},
{7,0,8,0,0,7},
{1,2,0,0,1,2},
{9,6,0,0,5,9},
{4,7,0,0,7,3},
{4,7,0,0,7,3},
{4,7,0,8,7,3},
{6,7,0,0,7,5},
{0,0,0,0,0,0},
{0,0,0,0,8,0},
{2,8,0,0,0,0},
{2,2,0,0,0,7},
{4,4,7,0,8,0},
{6,4,7,0,0,0},
{0,6,0,0,7,0},
{6,0,0,0,0,0},
{0,0,0,0,1,2},
{7,0,0,1,9,4},
{0,0,8,5,9,4},
{0,0,0,0,5,6},
{0,1,2,0,0,0},
{1,9,6,0,0,0},
{5,6,7,0,0,0},
{7,0,0,0,0,0},
{0,0,8,0,7,7},
{0,0,0,7,1,2},
{0,0,0,1,9,4},
{8,0,0,3,1,2},
{7,0,0,3,3,4},
{7,0,0,3,3,4},
{0,0,8,3,3,4},
{0,0,0,5,5,6},
{7,0,0,7,5,9},
{0,0,1,2,7,3},
{8,0,5,6,0,5},
{0,0,0,0,0,0},
{0,0,0,7,8,1},
{7,7,0,0,0,5},
{1,2,0,0,0,7},
{3,4,0,0,0,0},
{3,4,8,0,0,0},
{9,6,0,0,0,0},
{6,8,0,0,0,0},
{7,7,1,2,7,7},
{0,7,3,4,7,0},
{0,7,3,4,7,0},
{0,7,3,4,7,0}
};

private void loadMapPic()
{
try
{
imgLevel1=Image.createImage("/map1.png");
imgLevel2=Image.createImage("/map2.png");
imgLevel3=Image.createImage("/map3.png");
imgLevel4=Image.createImage("/map4.png");
}catch(Exception e)
{
e.printStackTrace();
}
}
public Map(MyCanvas myCanvas,int level) {
this.myCanvas=myCanvas;
scnH=myCanvas.height;
scnW=myCanvas.width;
bossMaked=false;
loadMapPic();
setMap(level);
}

public void setMap(int level)
{
switch(level)
{
case 1:
mapLayer=new TiledLayer(TOTAL_COL,TOTAL_ROW, imgLevel1,CELL_W,CELL_H);
curArray=level1Array;
break;
case 2:
mapLayer=new TiledLayer(TOTAL_COL,TOTAL_ROW, imgLevel2,CELL_W,CELL_H);
curArray=level2Array;
break;
case 3:
mapLayer=new TiledLayer(TOTAL_COL,TOTAL_ROW, imgLevel3,CELL_W,CELL_H);
curArray=level3Array;
break;
case 4:
mapLayer=new TiledLayer(TOTAL_COL,TOTAL_ROW, imgLevel4,CELL_W,CELL_H);
curArray=level4Array;
break;
}
for(int i=0;i<TOTAL_ROW;i++)
{
for(int j=0;j<TOTAL_COL;j++)
{
mapLayer.setCell(j,i,curArray[i][j]+1);
}
}
curY=-(TOTAL_ROW*CELL_H-scnH);
curX=(scnW-TOTAL_COL*CELL_W)/2;
mapLayer.setPosition(curX,curY);
myCanvas.layerMap=mapLayer;
}
public void scrollMap()
{
if(curY<0)
{
curY+=scrollSpeed;
mapLayer.setPosition(curX,curY);
if((curY>-100) & (!bossMaked))
{
//System.out.println("in map scroll makeBoss");
myCanvas.makeBoss();
bossMaked=true;
}
}
}
public TiledLayer getMapLayer()
{
return mapLayer;
}
}
whanly 2010-09-12
  • 打赏
  • 举报
回复
用数组!!!
limo顾 2010-09-10
  • 打赏
  • 举报
回复

........怎么说 呢
ly_am39 2010-09-07
  • 打赏
  • 举报
回复
用photoShop把这几张图片合成一张吧。
车把式 2010-09-07
  • 打赏
  • 举报
回复
和你说的类似,按照组合方式稍微改下
车把式 2010-09-07
  • 打赏
  • 举报
回复
// getTransImg(alpha,srcRgbdata,desRgbdata)
private int[] getTransImg(int alpha,int[] srcRgbdata,int[] desRgbdata)
{
int [] tempRgbData = new int[desRgbdata.length];

int sr ;
int sg ;
int sb ;
int dr ;
int dg ;
int db ;
int tr ;
int tg ;
int tb ;
for(int i=0;i<desRgbdata.length;i++)
{
sr = (srcRgbdata[i]&0xff0000)>>16;
sg = (srcRgbdata[i]&0xff00)>>8;
sb = srcRgbdata[i]&0xff;
dr = (desRgbdata[i]&0xff0000)>>16;
dg = (desRgbdata[i]&0xff00)>>8;
db = desRgbdata[i]&0xff;
tr = (sr*alpha + dr*(255-alpha))/255;
tg = (sg*alpha + dg*(255-alpha))/255;
tb = (sb*alpha + db*(255-alpha))/255;
tempRgbData[i] = (tr<<16)|(tg<<8)|tb;
}
return tempRgbData;
}
车把式 2010-09-07
  • 打赏
  • 举报
回复

/*
* 图片叠加,将src和image合成一张图片,x_pos,y_pos一般为0,0,也可以为自定义值
*/
public Image effect_image_add_image(Image src,Image image,int x_pos,int y_pos)
{
Image temp = Image.createImage(src.getWidth(),src.getHeight());
Graphics g = temp.getGraphics();
//g.drawImage(src,x_pos,y_pos,Graphics.LEFT|Graphics.TOP);
//g.drawImage(image,x_pos,y_pos,Graphics.LEFT|Graphics.TOP);*/
int alpha = 168;
int []srcRgbdata = new int[src.getWidth()*src.getHeight()];
int []desRgbdata = new int[image.getWidth()*image.getHeight()];
src.getRGB(srcRgbdata,0,src.getWidth(),0,0,src.getWidth(),src.getHeight());
image.getRGB(desRgbdata,0,image.getWidth(),0,0,image.getWidth(),image.getHeight());
g.drawRGB(getTransImg(alpha,srcRgbdata,desRgbdata),0,src.getWidth(),0,0,src.getWidth(),src.getHeight(),false);
src=null;
image=null;
return temp;
}
开源螺丝钉 2010-09-05
  • 打赏
  • 举报
回复
绘制到屏幕上,再截屏,>_<
lpc0217 2010-08-30
  • 打赏
  • 举报
回复
精灵画法可以不同角度画 也可以直接的g.drawImage(g,0,0,17);调坐标的那么画
sunbogaoqi 2010-08-30
  • 打赏
  • 举报
回复
建议你用PS...
Sodino 2010-08-26
  • 打赏
  • 举报
回复
1.美工做图,拼合多张图片,程序里自动拆分

2.将多个png文件以整合成一个字节文件,程序里根据png头信息识别。
周公 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 zzz_boys 的回复:]
爱爱爱
[/Quote]
多张合并成一张一般是用PS之类的图片处理软件来处理的。当然用代码也是可以的。
程序里用的时候用代码分割处理。
prince58 2010-08-26
  • 打赏
  • 举报
回复
计算好位置,画在同一个canvas上就可以了。
网络咖啡 2010-08-25
  • 打赏
  • 举报
回复
有专门的工具的,比如binComplier
吴佳峻 2010-08-25
  • 打赏
  • 举报
回复
这个倒没想过。

如果想了解的话,应该看看png格式数据的构成,是怎么生成和解析的?

帮你顶一下。
加载更多回复(1)

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧