33
Computer Science 101 Introduction to Programming with Pictures

Computer Science 101 Introduction to Programming with Pictures

Embed Size (px)

Citation preview

Computer Science 101

Introduction to Programming with Pictures

setMediaPath

Invoking this function allows the user to choose a folder that will be the “default” location where searches for media files will start. This just makes it easier to pick files, etc.

JES Picture Layout With JES, pictures are laid out in an x,y

coordinate system starting in upper left corner, with x increasing to the right and y increasing downward.

Working with Pixels – get values

getPixel(picture,x,y) – obtains the pixel at the given coordinates in the given picture.

getColor(pixel) – obtains the color object of the pixel.

getRed(pixel) – obtains the red value of the pixel, etc.

getX(pixel) – obtains the X coordinate of the pixel, etc.

Working with Pixels – changing values

setColor(pixel, color) – changes the pixel’s color to be the given color.

setRed(pixel, redAmt) – changes the pixel’s red value to the given amount, etc.

pickAColor() – lets the user choose a color with slide bars, etc.

ZOOM

List of Pixels getPixels(myPicture) - returns a list of all

the pixels from the picture. The pixels will be in the list in row order –

first row followed by second row, etc.

Note that the pixel in position (x,y) has list index equal to

width * y + x

For example, the pixel at (3,2) has index 2*4 + 3

Changing Individual Pixels

1. Get the pixel into a variable:myPixel = getPixel(myPicture,10,6)

2. If the change does not depend on current values in the pixel, make change:

setRed(myPixel, 128)

3. If change depends on current values, get the needed values first:

myRed = getRed(myPixel)setRed(myPixel, myRed * 0.5)

Processing all the Pixels

The general strategy is to use a for-loop on the list of pixels:

thePixels = getPixels(thePicture)for aPixel in thePixels : <process aPixel>

orfor aPixel in getPixels(thePicture) : <process aPixel>

Choosing Pixels to Process

Sometimes we decide which pixels to process or which process to apply depending on conditions on the pixels

thePixels = getPixels(thePicture)for aPixel in thePixels: if <condition about aPixel>

<process aPixel>

Working with Pixels within a Region

Often we can restrict our processing to pixels within some rectangular region of the picture. This can be much, much more efficient than iterating over all of the multitude of pixels.

for x in range(a,b) : for y in range(c,d) :

<process pixel at x,y>

Parameter for Color

Add Parameters for Width, Height, and Starting Point

Negative

Lighten

GrayScale

Sepia Tint

Rotate 90

Copy Rectangle

Edge Detection

Blend

Frame