hi
i am new to python and PIL and was trying to write a class to read and
write RGB color model jpeg images..
i came up with this class below..i want to know if this is the way to
read/write the RGB color model jpeg..if anyone can give feedback (esp
on the methods  writeImage1( )  and writeImage2( )   it wd help my
studies ..
TIA
dn

#jpgpy.py

import Image
from sys import argv
from numpy import array


class JPGFile:
        def __init__(self,filename):
                self._filename=filename
                self._height=0
                self._width=0
                self._mode=""
                self._rgblist=[]
                self._pixellist=[]
                self._pixarray=None
                self.readImage()

        def getheight(self):
                return self._height
        def getwidth(self):
                return self._width

        def getpixellist(self):
                return self._pixellist

        def getrgblist(self):
                return self._rgblist

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

        def readImage(self):
                im=Image.open(self._filename)
                self._mode=im.mode
                self._width,self._height=im.size
                for y in range(self._height):
                        for x in range(self._width):
                                r,g,b=im.getpixel((x,y))
                                self._rgblist.append((r,g,b))
                                pval=self.makepixval((r,g,b))
                                self._pixellist.append(pval)
                self._pixarray=array(self._pixellist,float)

        def makergb(self,pixval):
                alpha=pixval>>24
                red=(pixval>>16 )&255
                green=(pixval>>8 )&255
                blue=(pixval)& 255
                return red,green,blue

        def writeImage1(self,fname,data,width,height):
                imnew=Image.new(self._mode,(width,height))
                newrgblist=[]
                for i in range(len(data)):
                        r,g,b=self.makergb(data[i])
                        newrgblist.append((r,g,b))
                index=0
                for y in range(height):
                        for x in range(width):
                                imnew.putpixel((x,y),newrgblist[index])
                                index+=1
                imnew.save(fname)

        def writeImage2(self,fname,data,width,height):
                imnew=Image.new(self._mode,(width,height))
                newrgblist=[]
                for i in range(len(data)):
                        r,g,b=self.makergb(data[i])
                        newrgblist.append((r,g,b))
                imnew.putdata(newrgblist)
                imnew.save(fname)


imgname=argv[1] #Usage: python jpgpy.py myimage.jpg
print "to read from:",imgname
x=JPGFile(imgname)
print x.getheight(),"",x.getwidth()
pixlist=x.getpixellist()
rgbtpllist=x.getrgblist()
w=x.getwidth()
h=x.getheight()
x.writeImage1("newimage1.jpg",pixlist,w,h)

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to