473,239 Members | 1,607 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,239 software developers and data experts.

do i need to create new rgbimage class

hi
am a beginner in python and PIL .I need to read an RGB 8 bit image
(am using jpeg )and pack the rgb color values into a double value so i
can store the image as a list of pixelvalues.From my application i
should be able to call rgbimage1.getpixellist() to retrieve the double
values of an image.
Do i need to create a new class for this?I made something like

class myrgbimage:
def __init__(self,filename):

def _readimage(self):
im=Image.open(filename)
self._readImage(filename)
self._wd,self._ht=im.size
for y in range(self._ht):
for x in range(self._wd):
r,g,b=im.getpixel((x,y))
pval=self.rgbTodoubleval((r,g,b))
self._pixellist.append(pval)

def rgbTodoubleval(self,(r,g,b)):
alpha=255
pixelvalue=(alpha<<24)|(r<<16 )|( g<<8) | b
return pixelvalue

the way i am currently using this is to create instances using
filenames and then retrieving the list of pixelvalues in the image.
like
for z in imagefilenamelist:
myimage=myrgbimage(z)
imagelist.append(z)

so later on i can take each instance and get its width,height and
pixellist and work with them..anyway the code takes too much time and
I wish to know if i can get these 'packed pixelvalues' straight away
without using the above class

jim
Dec 29 '07 #1
4 1190
On 29 dic, 12:42, jimgarde...@gmail.com wrote:
am a beginner in python and PIL *.I need to read an RGB 8 bit image
(am using jpeg )and pack the rgb color values into a double value so i
can store the image as a list of pixelvalues.From my application i
should be able to call rgbimage1.getpixellist() to retrieve the double
values of an image.
(May I ask why an accessor like getpixellist() instead of simply
rgbimage1.pixellist?)
Do i need to create a new class for this?I made something like

class myrgbimage:
* * * def *__init__(self,filename):

* * * def _readimage(self):
* * * * * im=Image.open(filename)
* * * * * self._readImage(filename)
* * * * * self._wd,self._ht=im.size
* * * * * for y in range(self._ht):
* * * * * * * *for x in range(self._wd):
* * * * * * * * * * *r,g,b=im.getpixel((x,y))
* * * * * * * * * * *pval=self.rgbTodoubleval((r,g,b))
* * * * * * * * * * *self._pixellist.append(pval)
The PIL docs at [1] say that using getpixel is very slow, and suggest
to use getdata instead. And you want a flat representation anyway,
just like getdata. So replace the for loops above with:

rgbTodoubleval = self.rgbTodoubleval
self._pixellist = [rgbTodoubleval(pix) for pix in
im.getdata()]

I've not tested it, but should be faster.
def rgbTodoubleval(self,(r,g,b)):
alpha=255
pixelvalue=(alpha<<24)|(r<<16 )|( g<<8) | b
return pixelvalue
I don't get the name - why "rgb to double"? This does not return a
"double", but a long integer, even if you intended to return a 32 bit
integer.
This version returns an integer:

from struct import pack, unpack
def rgbTodoubleval((r,g,b)):
alpha=255
return unpack("l", pack("BBBB", b, g, r, alfa))[0]

It *may*, or not, be what you want...

--
Gabriel Genellina
Dec 30 '07 #2
On 30 dic, 04:57, Gabriel Genellina <gagsl-...@yahoo.com.arwrote:
The PIL docs at [1] say that using getpixel is very slow, and suggest
Sorry, dropped the reference:

[1] http://www.effbot.org/imagingbook/im...Image.getpixel

--
Gabriel Genellina
Dec 30 '07 #3
(May I ask why an accessor like getpixellist() instead of simply
rgbimage1.pixellist?)
sorry,
bad style of coding on my part..was doing java stuff..
>
I don't get the name - why "rgb to double"? This does not return a
"double", but a long integer,
actually it was to be of 'long' type not double..sorry again

jim
Dec 30 '07 #4
On 30 dic, 10:53, jimgarde...@gmail.com wrote:
I don't get the name - why "rgb to double"? This does not return a
"double", but a long integer,

actually it was to be of 'long' type not double..sorry again
Notice that a Python 'long' is an infinite range integer; the C 'long'
type maps to Python 'int'. Perhaps you want the latter.

--
Gabriel Genellina
Dec 30 '07 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

10
by: Nikita A. Visnevski | last post by:
Hi everyone, I am rather new to Java beans. Just picked up a book last night and started reading about them. I am building an application that allows a user to define objects with dynamic...
5
by: Carl Bevil | last post by:
I'm creating a library for internal use that relies on third-party code. I don't want clients of this library to know anything about the third party code, when compiling or running. Generally...
1
by: Julia | last post by:
Hi I have a domain model and I am looking for the correct design patterns to use, The following is my domain model Server-> the is the thread boundaries,the server create a thread the...
2
by: Bonj | last post by:
Hello Can anyone assist with the following class hierarcy problem? I have a series of window classes, the object model currently being as such: Window / | \ / | \...
9
by: jon wayne | last post by:
OK! I had this nagging doubt Consider (without worrying abt access specifiers) class Kid : public Parent{...}; Parent::someFunc() { Kid k; }
48
by: Chad Z. Hower aka Kudzu | last post by:
A few of you may recognize me from the recent posts I have made about Indy <http://www.indyproject.org/indy.html> Those of you coming to .net from the Delphi world know truly how unique and...
15
by: Jess | last post by:
Hello, Sometimes declarations are all what we need when we define/declare classes (or functions?), but sometimes we need definitions. I learned that if we define a class (B) that has an object...
10
by: CuTe_Engineer | last post by:
hii, i have cs assignment i tried to solve it but i still have many errors , plzz help mee :"< it`s not cheating becuz i`ve tried & wrote the prog. i just wanna you to show me my mistakes ...
1
by: javabeginner123 | last post by:
i have a java prob, and i have to solve it fast, but i'm just getting to know it, so plz help me solve it with full code completed, thanks so much. the prob is to create a monter fight and there is...
0
by: abbasky | last post by:
### Vandf component communication method one: data sharing ​ Vandf components can achieve data exchange through data sharing, state sharing, events, and other methods. Vandf's data exchange method...
2
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 7 Feb 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:30 (7.30PM). In this month's session, the creator of the excellent VBE...
0
by: stefan129 | last post by:
Hey forum members, I'm exploring options for SSL certificates for multiple domains. Has anyone had experience with multi-domain SSL certificates? Any recommendations on reliable providers or specific...
0
by: MeoLessi9 | last post by:
I have VirtualBox installed on Windows 11 and now I would like to install Kali on a virtual machine. However, on the official website, I see two options: "Installer images" and "Virtual machines"....
0
by: DolphinDB | last post by:
The formulas of 101 quantitative trading alphas used by WorldQuant were presented in the paper 101 Formulaic Alphas. However, some formulas are complex, leading to challenges in calculation. Take...
0
by: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
0
by: Aftab Ahmad | last post by:
Hello Experts! I have written a code in MS Access for a cmd called "WhatsApp Message" to open WhatsApp using that very code but the problem is that it gives a popup message everytime I clicked on...
0
by: Aftab Ahmad | last post by:
So, I have written a code for a cmd called "Send WhatsApp Message" to open and send WhatsApp messaage. The code is given below. Dim IE As Object Set IE =...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.