본문 바로가기

U of T: Computer Science/First Year: CSC108

CSC108 Project

CSC108H/A08H Project:
Photo Editor

Overview

The purpose of this project is to give you practice in the following areas:

  • Designing and implementing a GUI application.
  • Combining topics learned throughout the semester.

Introduction

For the project, you will design and implement a GUI application for editing photos.

In the description below, an overview of the photo editor application is given along with some guidelines and constraints. For this project, you have a bit more flexibility than you did on the assignments, including the opportunity to customize the application and design most of the GUI.

Carefully read the Marking section before starting. The baseline requirements for the project are given below. If you meet these baseline requirements, you can earn up to 80%. Any enhancements you make over and above the baseline can further improve your mark.

Part 1: Photo Editor

For this part of the project, you will design and implement a photo editor with a Tkinter graphical user interface. Save your GUI code in photo_editor.py and your image manipulation functions in image_manipulation.py. In photo_editor, you will need to import image_manipulation.

Important note: Part 2 requires you to write about your project. Read Part 2 before you start. As you work on Part 1, think about what you will write about in Part 2.

The baseline requirements for your photo editor are the following features:

  • a menu that allows the user to:
    • prompt for a picture file, open the picture, and display it in a Tkinter window (using a Label or similar Tkinter widget)
    • save the open picture as a bitmap (use the PIL Image save method); any modifications to the picture should be saved and the user should be able to specify the file name
    • close the open picture (just the picture, not the entire application)
    • quit the application
  • image manipulation features that can be applied to the open picture:
    • convert the image to greyscale
    • remove redeye from the picture (using the basic algorithm from assignment 1)
    • mirror the image (the user should be able to select horizontal or vertical mirroring)
    • crop the image (the user should be able to specify the four coordinates (left, right, top, bottom) to use as image borders)
    • rotate the image by 90, 180, or 270 degrees (the user should be able to specify the number of degrees and whether to rotate the image left or right)
    • plus 2 other image manipulations not done in lecture, labs, or assignments

You are free to decide which functions to write and what parameters they will have. In addition to the feature set above, the following two requirements apply:

  • you must include an if __name__ == "__main__": ... section in photo_editor.py that launches the GUI application.
  • You may not use print or raw_input.

You may reuse code that you or your partner have written for this course in labs or assignments. You have our permission to use the mirror code from lecture and the red-eye solution code from A1 with attribution in the docstring (for example, 'This code is based on Andrew's/Jen's/Michael's/Paul's Week 8 Wednesday lecture notes.'). All other code must be written by you. Of course, you should use the picture module.

You will need to use some of these Tkinter widgets:

  • Button
  • Canvas
  • Checkbutton
  • Entry
  • Frame
  • Label
  • Listbox
  • Menu
  • Menubutton
  • Message
  • Radiobutton
  • Scale
  • Scrollbar
  • Text

Part 2: Written Evaluation of User Interface

Your choice of widgets and user interface layout affect usability.

Some image manipulation features require user input; for example, rotate requires the number of degrees and direction, and crop requires four coordinates. For either rotate or crop, address the following points:

  • identify three options for the user interface (for example, which widgets to use, how they are arranged, when they are viewable, etc),
  • identify the option you chose, and
  • evaluate how your choice affects usability.

Submit this part in a plain text file named design.txt. Your submission should not exceed 250 words.

To guarantee that the file is plain text, you should use Wing as your editor. If you don't use Wing and we can't read your file, then we will not mark your writing component. Please leave a blank line between paragraphs.

Enhancements: Written Description

If you made enhancements, describe those enhancements, explaining how they went beyond the baseline requirements to something exceptional (see Marking section). Submit this part in a plain text file named enhancements.txt. Your submission should not exceed 150 words.

If you did not make enhancements, do not submit this file. If you do not submit this file, you will still be able to earn up to 80% (see Marking section).

What to Hand In

How to hand in? Instructions on how to submit electronically are posted on the Assignments page of the course website.

What to hand in? Hand in the following files:

  • image_manipulation.py
  • photo_editor.py
  • design.txt
  • enhancements.txt
  • any other files needed for your program

Student's Solution


'U of T: Computer Science > First Year: CSC108' 카테고리의 다른 글

CSC108 Assignment 4  (0) 2007.12.16
CSC108 Assignment 3  (0) 2007.12.16
CSC108 Assignment 2  (0) 2007.12.16
CSC108 Assignment 1  (0) 2007.12.16
CSC 108 Course 소개.  (0) 2007.12.16