Reading a JPG image ...
Blitz3D Forums/Blitz3D Programming/Reading a JPG image ...| 
 | ||
| ... that is *not* in a JPG file. Say I have a JPG picture data in a bank, but I dont have the .jpg file (data received by network stream, generated ...). How can I read that data to view the picture ? The only solution I can think of right now is writing that data as a file then reading the file with loadimage or some other function. However, as the tool im working on is supposed to read lots of images, think the writefile/loadimage method might not be the best thing. I did a quick search for jpeg reading dlls but cound only find dll asking for a file name and not directly data. Any idea ? | 
| 
 | ||
| Maybe you can use the FreeImage.dll ? I've never used it, but here is a topic with .decls for it. http://www.blitzbasic.com/Community/posts.php?topic=48558 There is a command that is called FIFromBank, which sounds promising.. | 
| 
 | ||
| if it is sent via network stream then why dont you use readpixel fast and then send that value?  You can use writepixelfast to a buffer after you recieve it. | 
| 
 | ||
| Warner > I tought of that but the library it works with a picture file. Nate the great > Im not trying to make my life harder you know, if I could get the data in a more readable form, I would. : ) | 
| 
 | ||
| @Nate - because the pixels aren't simply stored pixel by pixel row by row in a jpeg, it is stored in the compressed jpeg format, which you'd need to either do as he says above, write to a file then load in, or learn the file format for jpeg and uncompress it himself in memory. | 
| 
 | ||
| I would use DevIL. Dunno if anyone wrapped it for B3D already or not. http://openil.sourceforge.net/features.php | 
| 
 | ||
| Okay Sacha, just to check: you have the complete contents of the JPEG, just saved in a bank, right? Create a file, and dump the bank contents one byte at a time with something like this: JPEG = WriteFile("image.jpg")
For i = 1 To BankSize(JPEGBank)
    WriteByte JPEG,PeekByte(JPEGBank,i - 1)
Next
CloseFile JPEG
Global Image = LoadImage("image.jpg")That's just off the top of my head, you'll probably need to fiddle with it for it to work. Cheers! | 
| 
 | ||
| See FiLoadFromBank.bb here. | 
| 
 | ||
| Yes adam this works and is what Im currently using, however this is the 'bad' solution (write a file then reading it to get data we already have. markcw > Thanks, thats seems to be exactly what I need, ill be trying that. : ) |