NNTP-Posting-Date: Sat, 11 May 2013 09:00:31 -0500 Date: Sat, 11 May 2013 15:00:30 +0100 From: lipska the kat <"nospam at neversurrender dot co dot uk"> Organization: Trollbusters 3 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130308 Thunderbird/17.0.4 MIME-Version: 1.0 Newsgroups: comp.lang.java.programmer Subject: Re: How to convert image into Hex 2 Dimensional Array? References: <41718873-b1a6-4b97-bbbb-8002c48d4e29@googlegroups.com> <518e3e8c$0$32113$14726298@news.sunsite.dk> In-Reply-To: <518e3e8c$0$32113$14726298@news.sunsite.dk> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Message-ID: <_I-dnf7s2opi0xPMnZ2dnUVZ8vqdnZ2d@bt.com> Lines: 97 X-Usenet-Provider: http://www.giganews.com X-AuthenticatedUsername: NoAuthUser X-Trace: sv3-lIVsSb06u4wng3rAuy2KjGzqBpkFgCaqCraqEDL+mMwslutM/pPBHpsaMPE5EcIbt0/iRC27r7bc8BL!7+pTjkBC8H7t5e/enE/0ulKnrlwzJPEqN6yvPmAc74wSWylfja4RVEH7SLYfkiPCHyd6gg8MKSU= X-Complaints-To: abuse@btinternet.com X-DMCA-Complaints-To: abuse@btinternet.com X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 5367 Path: csiph.com!usenet.pasdenom.info!news.stben.net!border3.nntp.ams.giganews.com!Xl.tags.giganews.com!border1.nntp.ams.giganews.com!nntp.giganews.com!local2.nntp.ams.giganews.com!nntp.bt.com!news.bt.com.POSTED!not-for-mail Xref: csiph.com comp.lang.java.programmer:24007 On 11/05/13 13:50, Arne Vajhøj wrote: > On 5/11/2013 4:28 AM, lipska the kat wrote: >> On 08/05/13 19:54, Joshua Cranmer 🐧 wrote: >>> On 5/8/2013 12:40 PM, lipska the kat wrote: >>>> On 08/05/13 17:52, Joshua Cranmer 🐧 wrote: >>>>> On 5/8/2013 1:30 AM, sout saret wrote: >>>>>> Dear Community! >>>>>> >>>>>> May you help me how to write code in java to convert image to Hex 2 >>>>>> dimensional array. I want to show format as below: >>>>> >>>>> What format is this two-dimensional array? Looking from your code, you >>>>> appear to want it to be some sort of 256-byte pixel value, but are you >>>>> desiring: >>>>> 1. 8-bit ARGB >>>>> 2. 5-6-5 RGB >>>>> 3. 8-bit grayscale >>>>> 4. 32-bit ARGB >>>>> 5. 24-bit RGB >>>>> 6. Binary version of any widely-used image format, including but not >>>>> limited to PNG, BMP, GIF, JPG, XBM, TIF, and ICO. >>>> >>>> I think he wants a byte for byte copy so the first byte gets copied >>>> into >>>> [0][0] the next into [1][0] the next [2][0] etc until [width-1][0] >>>> then start again at [0][1], [1][1], [2][1] etc etc >>> >>> A byte for byte copy of what? I'm guessing the answer is the "pixel >>> matrix", but that's underdefined since pixels can take on many different >>> formats, which is what I was trying to get at--what encoding of a pixel >>> is desired? >> >> I've been thinking about this and actually, in a byte for byte copy >> the 'encoding' of a pixel is irrelevant. >> >> If I open a (for example) jpg image in a hex viewer(ghex) all I see is >> a bunch of bytes. As far as ghex is concerned that's all it is. >> The bunch of bytes is only an image if it is interpreted as an image by >> software that knows how to interpret the data *as an image*. >> >> So, as far as reading the data goes, all we have is a stream of bytes. >> >> If we want to store these bytes in a matrix(for whatever reason) we may >> have an immediate problem. It may be the case that the byte count is not >> a 'perfect square', what this means is that there may eventually be a >> number matrix cells that will not contain data that is relevant to the >> byte stream we are reading. >> >> So, how do we determine where in the matrix our data ends and the >> default values used to populate the arrays on creation begin? >> >> If we use byte[][] we have a problem. >> All byte values from 0x00 - 0xFF *could* be valid data, >> byte arrays have each cell initialized to 0 (0x00) >> >> Byte arrays however have each cell initialized to null. >> >> It will therefore be very easy to determine the end of data in a >> Byte[][] matrix. In a byte[][] matrix we would have to add some >> information somewhere outside of the matrix. >> >> This situation only really applies if we wish to store our bytes in a >> matrix. Obviously this is *not* a problem if we store the bytes in a >> single dimension array. >> >> So, I'm not so sure that the original advice was as bad as all that, it >> depends on the end usage of the stored data. >> >> As ever I'd be interested in any comments. > > Java 2D arrays are not necessarily square, so the second dimension > can be different for each element of the first dimension. So it > is also an option to use that instead of Byte[] with null fill > to end. Now *that's* interesting. I can't say I've done much with byte matrices or any other matrix for that matter, or come to that, arrays, I generally tend to use dynamic storage components, like LinkedList<> for example. this seems to compile. byte[][] bytes = new byte[2][]; bytes[0] = new byte[10]; bytes[1] = new byte[7]; I didn't know you could do that. Well there you are, If I had ignored this thread I wouldn't have learned that. comp.lang.java.programmer, gotta love it. lipska -- Lipska the Kat©: Troll hunter, sandbox destroyer and farscape dreamer of Aeryn Sun