jpeg image read class

devnew at gmail.com devnew at gmail.com
Wed Oct 31 02:48:18 EDT 2007


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)




More information about the Python-list mailing list