Java-Gaming.org    
Featured games (91)
games approved by the League of Dukes
Games in Showcase (581)
games submitted by our members
Games in WIP (500)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Generating Image  (Read 1259 times)
0 Members and 1 Guest are viewing this topic.
Offline Del-ONE

Senior Newbie





« Posted 2009-01-28 06:19:54 »

Hi all,

I'm looking for an easy way to generate an image by getting a clip from a different one, as with say a sprite sheet or a bitmap font.  Using separate files has been alright (albeit annoying and wasteful) for sprites, but I'm not having 24 pics for every font & size combination I want to use.

Anyways my ingenious plan was:
1. Load BufferedImage
2. getGraphics() and clip
3. ...
4. Profit!!!

Unfortunately, I can't seem to find anything obvious to throw into 3.  After hunting through Rasters and such for hours with no apparent success (I don't doubt I missed something though), I thought it would probably be better to bug someone for a few minutes of their time rather than pull my hair out/toss the laptop out the window/etc.

Thanks

P.S. Please don't say drawString(); I'm not that retarded. I'm using LWJGL and for unknown reasons the NeHe tutorial code and the Slick utility class don't like me  =( , lol (by which of course I mean I'm screwing stuff up and am too unfamiliar to deal with it).

P.P.S. Ok, last question. Even though I'm not using Java2D anymore, I've alway been curious if clipping the graphics context created a speed boost (say if I were drawing 500 images outside of the clip).
Offline Markus_Persson

JGO Wizard


Medals: 12
Projects: 19


Mojang Specifications


« Reply #1 - Posted 2009-01-28 13:58:45 »

Something like this, perhaps?

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
BufferedImage sheet = loadSheet();
for (int x=0; x<xCount; x++)
  for (int y=0; y<yCount; y++)
  {
      BufferedImage clippedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
      Graphics g = clippedImage.getGraphics();
      g.drawImage(sheet, -x*width, -y*height);
      g.dispose();
      storeClippedImageSomehow(clippedImage, x, y);
  }

Play Minecraft!
Offline cylab

JGO Knight


Medals: 34



« Reply #2 - Posted 2009-01-28 14:16:28 »

doesn't BufferedImage.getSubimage() do what you want?

Mathias - I Know What [you] Did Last Summer!
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Del-ONE

Senior Newbie





« Reply #3 - Posted 2009-01-28 17:52:33 »


@ Markus_Persson
Oh, that's a great idea!  I was trying to go at it backwards (trying to clip the sheet, move what i clipped to [0,0], and then draw) so I completely didn't see that I could draw the entire sheet to the new image in such a way that the new image would clip it to what I wanted.  I gotta start learning to see a problem from different angles at once; I've had that kind of problem before.  However...

@ cylab
 Shocked Shocked Shocked  Where did that come from?!?!? lol, I swear I scrolled through the BufferedImage documentation specifically looking for methods that return BufferedImage and didn't see one.  I guess I missed it  Undecided.  Argh, that was a complete waste people's time then.

Thanks guys, although I feel retarded that I didn't come up with either of those on my own....
Offline Markus_Persson

JGO Wizard


Medals: 12
Projects: 19


Mojang Specifications


« Reply #4 - Posted 2009-01-29 09:16:12 »

Yeah, that's probably a much better alternative.

I keep forgetting getSubImage exists. Heh.

Play Minecraft!
Online Riven
« League of Dukes »

JGO Overlord


Medals: 606
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #5 - Posted 2009-01-29 21:00:39 »

One thing you got to watch out for is that the returned image shares its data with it's parent. So you can't create 4 sub images of the same region and draw different stuff on each. You'll end up with 4 equal (messed up) sub images.

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

xsi3rr4x (64 views)
2014-04-15 18:08:23

BurntPizza (62 views)
2014-04-15 03:46:01

UprightPath (75 views)
2014-04-14 17:39:50

UprightPath (58 views)
2014-04-14 17:35:47

Porlus (76 views)
2014-04-14 15:48:38

tom_mai78101 (101 views)
2014-04-10 04:04:31

BurntPizza (161 views)
2014-04-08 23:06:04

tom_mai78101 (256 views)
2014-04-05 13:34:39

trollwarrior1 (209 views)
2014-04-04 12:06:45

CJLetsGame (216 views)
2014-04-01 02:16:10
List of Learning Resources
by SHC
2014-04-18 03:17:39

List of Learning Resources
by Longarmx
2014-04-08 03:14:44

Good Examples
by matheus23
2014-04-05 13:51:37

Good Examples
by Grunnt
2014-04-03 15:48:46

Good Examples
by Grunnt
2014-04-03 15:48:37

Good Examples
by matheus23
2014-04-01 18:40:51

Good Examples
by matheus23
2014-04-01 18:40:34

Anonymous/Local/Inner class gotchas
by Roquen
2014-03-11 15:22:30
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!