D
devnew
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)
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)
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)
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)
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)
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)