• Advertisement

Archived

This topic is now archived and is closed to further replies.

[java] lots of downloaded data

This topic is 6224 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I have this applet that loads a few images, and then processes a few of them. The loading is done one and one with a waitForID(n) between every file. But when I start the processing, more data is downloaded each time i go over my loop (it cuts out a tile from a Image to an int[]). The only time I notice this effect is when launching over a modem connection. But loading time is increased from <2 seconds to over 8 minutes! The data downloaded is about 5 times the expected. Does java request the whole tileset each time i reference it or what? It almost looks that way to me. / dr-m

Share this post


Link to post
Share on other sites
Advertisement
depends on how you''re "requesting" the image. Sounds like there''s a problem with your code, could you post some of it?

Share this post


Link to post
Share on other sites

Ok, here are the ciritcal parts of my code... I noticed something just after posting the msg last night, this bug *only* exists in IE5 (the exact version currently unknown)! When launching in NS4.75, this loop was not an issue, it just flew by it. I didn''t try it with appletviewer or NS6 but I''m gonna do that later today.

Im using this technique on some other gfx as well, and it causes the same hangup and unneeded data transfers. With the appletviewer I sometimes experience strange hangups while grabbing. It complains about "Premature end of JPEG-file" from time to time. Or it just hangs without any message at all.

My fullsource image is 480x384 (not all used yet) and tiles are 24x24. It''s stored as an 16,6kB JPEG image.



  
//===================== Mediatracker loading loop ========================

// this stuff seem to work just fine.


currentItem = 0;

for (int i=0; i<totalItem; i++)
{
url = new URL(getCodeBase(), "data/" + RN.fullImageList[i]);
imgBank[i] = getImage(url);
tracker.addImage(imgBank[i], i);
tracker.waitForID(i);

currentItem++;
}

// ....


loadTilesFromImage(imgBank[RN.IMG_TILESJUNGLE]);

// ....




//===================== loop grabbing my tiles ===========================

// this loop executes horribly slow on my 28k8 modem.


private void loadTilesFromImage(Image imgTiles)
{
int i,j,s;
Rect tile = new Rect();

for (s=0, i=0; i<3; i++) {
for (j=0; j<20; j++, s++) {
tile.setRect(j*tileSide,
i*tileSide,
j*tileSide+tileSide,
i*tileSide+tileSide);

tileBuf[s] = new Tile(s, tile, imgTiles);
}
}
}


//==================== constructor in Tile class =========================

// each tile is stored as an Int[]


public Tile(int i, Rect srcRect, Image srcImage)
{
no = Tile.INVALID;
tile = new int[srcRect.getWidth() * srcRect.getHeight()];
PixelGrabber pg = new PixelGrabber(srcImage,
srcRect.getTopX(), srcRect.getTopY(),
srcRect.getWidth(), srcRect.getHeight(),
tile, 0, 24);
try {
pg.grabPixels();
}
catch(Exception e) {
return;
}
no = i;
tileInfo = srcRect;
}



/ dr-m

Share this post


Link to post
Share on other sites

  • Advertisement