Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (538)
Games in Android Showcase (132)
games submitted by our members
Games in WIP (600)
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 1368 times)
0 Members and 1 Guest are viewing this topic.
Offline Del-ONE

Senior Newbie





« Posted 2009-01-28 05: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: 16
Projects: 19


Mojang Specifications


« Reply #1 - Posted 2009-01-28 12: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 Ninja


Medals: 55



« Reply #2 - Posted 2009-01-28 13: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 16: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: 16
Projects: 19


Mojang Specifications


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

Yeah, that's probably a much better alternative.

I keep forgetting getSubImage exists. Heh.

Play Minecraft!
Offline Riven
« League of Dukes »

« JGO Overlord »


Medals: 840
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #5 - Posted 2009-01-29 20: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
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.

rwatson462 (29 views)
2014-12-15 09:26:44

Mr.CodeIt (20 views)
2014-12-14 19:50:38

BurntPizza (40 views)
2014-12-09 22:41:13

BurntPizza (75 views)
2014-12-08 04:46:31

JscottyBieshaar (37 views)
2014-12-05 12:39:02

SHC (50 views)
2014-12-03 16:27:13

CopyableCougar4 (47 views)
2014-11-29 21:32:03

toopeicgaming1999 (114 views)
2014-11-26 15:22:04

toopeicgaming1999 (102 views)
2014-11-26 15:20:36

toopeicgaming1999 (30 views)
2014-11-26 15:20:08
Resources for WIP games
by kpars
2014-12-19 00:26:14

Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-10 12:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-03 12:36:02

List of Learning Resources
by Longor1996
2014-08-17 00:40:00

List of Learning Resources
by SilverTiger
2014-08-06 09:33:27

Resources for WIP games
by CogWheelz
2014-08-02 06:20:17

Resources for WIP games
by CogWheelz
2014-08-02 06:19:50

List of Learning Resources
by SilverTiger
2014-08-01 06:29:50
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!