Mah
سه شنبه 29 بهمن 1387, 22:26 عصر
سلام بر همگی .
من یک تصویر بسیار بزرگ در حد (5000*5000) دارم .
می خواهم در یک برنامه تحت J2ME بتوانم آنرا لود کنم .
در واقع من آنرا با فتوشاپ تکه تکه کردم .
حالا می خواهم طوری تکه ها را لود کنم که با استفاده کلیدهای جهتی موبایل یا (2-4-6-8) کاربر تصور نماید یک تصویر بسیار بزرگ را می بیند ... نه چندین تصویر کوچک کنار هم را .
لطفاً راه حل های پیشنهادی را بفرمائید ......
منتظرم .
موفق و پیروز باشید .
Mah
چهارشنبه 30 بهمن 1387, 02:48 صبح
سلام .
مشکل من حل شد .
اما راه حلشو برای استفاده بقیه می گم .
من همانطور که گفتم با فتوشاپ (ابزار SLICE) عکس بزرگ خودمو تکه تکه کردم بعد به جای اینکه کل اونو یک جا لود کنم نام کل فایلهای ایجاد شده در یک ماتریس ریختم و هر بار قسمتهای لازم را لود کردم و نمایش دادم .
البته برای هر Zoom باید یک سری تصاویر جداگانه داشت :
این هم تکه برنامه اش :
if(Zoom==7)
{
int i,j=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{
Image imgM= getImageMap(Map7[i][j],Zoom);
int wx=x+ j*imgM.getWidth();
int hy=y+ i*imgM.getHeight();
if((x+(j)*imgM.getWidth()<w) && (y+(i)*imgM.getHeight()<h ))
g.drawImage(imgM,wx,hy, 0);
else
break;
}
}
else
if(Zoom==60)
{
int i,j=0;
for(i=0;i<5 ;i++)
for(j=0;j<5;j++)
{
Image imgM= getImageMap(Map60[i][j],Zoom);
int wx=x+ j*imgM.getWidth();
int hy=y+ i*imgM.getHeight();
if((x+(j-1)*imgM.getWidth()<=w) && (y+(i-1)*imgM.getHeight()<=h ))
g.drawImage(imgM,wx,hy, 0);
else
{
break;
}
x,y نقطه جاری در Canvas می باشد .
--------------------
تابع getImgMAP()
private Image getImageMap(int Cell,int Zoom) {
String no="";
if(Cell<10)
no="0"+String.valueOf(Cell);
else
no=String.valueOf(Cell);
String Path="/picture/MAP/"+Zoom+"/mapSEMNAN_"+no+".png";
try
{
MapCell = Image.createImage(Path);
} catch (java.io.IOException e)
{
e.printStackTrace();
}
return MapCell;
}
موفق و پیروز باشید .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.