from cImage import * def negativePixel(oldPixel): newred = 255 - oldPixel.getRed() newgreen = 255 - oldPixel.getGreen() newblue = 255 - oldPixel.getBlue() newPixel = Pixel(newred, newgreen, newblue) return newPixel def makeNegative(imageFile): myimagewindow = ImageWin("Image Processing",650,400) oldimage = FileImage(imageFile) oldimage.draw(myimagewindow) width = oldimage.getWidth() height = oldimage.getHeight() newim = EmptyImage(width,height) for row in range(height): for col in range(width): originalPixel = oldimage.getPixel(col,row) newPixel = negativePixel(originalPixel) newim.setPixel(col,row,newPixel) newim.setPosition(width+1,0) newim.draw(myimagewindow) myimagewindow.exitOnClick() def grayPixel(oldpixel): intensitySum = oldpixel.getRed() + oldpixel.getGreen() + \ oldpixel.getBlue() aveRGB = intensitySum // 3 newPixel = Pixel(aveRGB,aveRGB,aveRGB) return newPixel def bwPixel(oldpixel, threshold): intensitySum = oldpixel.getRed() + oldpixel.getGreen() + \ oldpixel.getBlue() aveRGB = intensitySum // 3 if aveRGB < threshold: newPixel = Pixel(0,0,0) else: newPixel = Pixel(255,255,255) return newPixel def makeGrayScale(imageFile): myimagewindow = ImageWin("Image Processing",900,400) oldimage = FileImage(imageFile) oldimage.draw(myimagewindow) width = oldimage.getWidth() height = oldimage.getHeight() newim = EmptyImage(width,height) for row in range(height): for col in range(width): originalPixel = oldimage.getPixel(col,row) newPixel = grayPixel(originalPixel) newim.setPixel(col,row,newPixel) newim.setPosition(width+1,0) newim.draw(myimagewindow) myimagewindow.exitOnClick() def makeBW(imageFile): myimagewindow = ImageWin("Image Processing",600,600) oldimage = FileImage(imageFile) oldimage.draw(myimagewindow) width = oldimage.getWidth() height = oldimage.getHeight() newim = EmptyImage(width,height) for row in range(height): for col in range(width): originalPixel = oldimage.getPixel(col,row) newPixel = bwPixel(originalPixel, 150) newim.setPixel(col,row,newPixel) newim.setPosition(width+1,0) newim.draw(myimagewindow) myimagewindow.exitOnClick() def pixelMapper(oldimage,rgbFunction): width = oldimage.getWidth() height = oldimage.getHeight() newim = EmptyImage(width,height) for row in range(height): for col in range(width): originalPixel = oldimage.getPixel(col,row) newPixel = rgbFunction(originalPixel) newim.setPixel(col,row,newPixel) return newim def verticalFlip(oldimage): width = oldimage.getWidth() height = oldimage.getHeight() newim = EmptyImage(width,height) maxCol = width-1 for row in range(height): for col in range(width): originalPixel = oldimage.getPixel(maxCol-col,row) newim.setPixel(col,row,originalPixel) return newim def horizontalFlip(oldimage): width = oldimage.getWidth() height = oldimage.getHeight() newim = EmptyImage(width,height) maxRow = height-1 for row in range(height): for col in range(width): originalPixel = oldimage.getPixel(col,maxRow-row) newim.setPixel(col,row,originalPixel) return newim def generalTransform(imageFile,transformFunction): oldimage = FileImage(imageFile) myimagewindow = ImageWin("Image Processing",oldimage.getWidth()*2,oldimage.getHeight()) oldimage.draw(myimagewindow) newimage = pixelMapper(oldimage,transformFunction) newimage.setPosition(oldimage.getWidth()+1,0) newimage.draw(myimagewindow) myimagewindow.exitOnClick() def flipTransform(imageFile, flipFunction): oldimage = FileImage(imageFile) myimagewindow = ImageWin("Image Processing",oldimage.getWidth()*2,oldimage.getHeight()) oldimage.draw(myimagewindow) newimage = flipFunction(oldimage) newimage.setPosition(oldimage.getWidth()+1,0) newimage.draw(myimagewindow) myimagewindow.exitOnClick()