Simple Image Compressor

Page index

  1. Introduction
  2. Project realization
  3. Executions examples / screenshots
  4. Download

Introduction

SIC is a simple image compression tool, designed originally for a University exam. It's aim is to compress lossy an image, save it in some custom format and "rebuild" it.

Actually, the image can read and write three types of image:

  1. TGA;
  2. SCI, the program own file format;
  3. RAW, as a binary dump of the image file (with 1 or 3 bytes per pixel).

Project realization

The project has been written in C++, to increase the speed efficiency. It has been developed in Linux 2.6.24-19, with the GCC family C++ compiler, nevertheless there should not be a problem compiling it in other platforms.

Executions examples / screenshots

This is a command line program, so it's quite hard define these as "screenshots", anyhow, screenshots is a high impact word... :)

Project compilation:

$ make
[CC] obj/main
[CC] obj/image
[CC] obj/exceptions
[CC] obj/generalException
[CC] obj/utils
[CC] obj/dct
[CC] obj/pixel
[CC] obj/quantization
[CC] obj/compression
[LD] progetto
$

Generating documentation:

$ make documentation 
Cleaning old doc dir...
Building new documentation...
Done!
$

RAW image compression:

$ ./progetto -it raw -bpp 3 -w 400 -h 300 -q 90 -bs 8 img/F1-400x300RGB.raw output.sci
Caricamento del file in corso... completato!
Si sta per comprimere l'immagine, ecco un riassunto dei parametri:
(si ricorda che, se non sono stati specificati, verranno usati i valori di 
default: 8 per la dimensione del blocco e 85
per il fattore di compressione)

 - dimensione del blocco: 8
 - qualita` finale: 90

Compressione in corso... completata!
$

Project verbose help:

$ ./progetto --help
Uso: ./progetto [OPTION] [INPUT] [OUTPUT]

Versione 1.0.0

Anno accademico 2007/2008
Progetto per il corso di Elaborazione delle Immagini (Universita` di Padova)
 - Andrea Burattin

Elenco delle opzioni:
  -bpp BPP,    --bytes-per-pixel BPP se l'immagine da leggere e` RAW, ne
                                     imposta il numero di bytes per pixel
                                     (attualmente gli unici valori leciti
                                     sono 1 o 3)
  -bs SIZE,    --block-size SIZE     in fase di compressione, imposta la 
                                     dimensione del blocco di quantizzazione
  -h HEIGHT,   --height HEIGHT       se l'immagine da leggere e` RAW, ne
                                     specifica l'altezza
  --help                             mostra questo menu, ed esce
  -it TYPE,     --input-type TYPE    il tipo dell'immagine di input (puo` essere
                                     tga, raw o sci)
  -ot TYPE,     --output-type TYPE   tipo dell'immagine di output (puo` essere
                                     tga, raw o sci)
  -q QUALITY,  --quality QUALITY     in fase di compressione imposta la qualita`
                                     che si desidera avere in compressione (i
                                     valori devono essere compresi fra 1 e 99,
                                     dove 1 indica bassa qualita` ma massima
                                     riduzione dello spazio)
  --version                          mostra informazioni sulla versione del
                                     programma, ed esce
  -w WIDTH,    --width WIDTH         se l'immagine da leggere e` RAW, ne
                                     specifica la larghezza

Nel caso in cui il fattore di compressione non sia specificato, verra` usato il
valore di default, impostato a 85. Se la dimensione del blocco non e`
specificata, verra` usato il valore di default, impostato a 8.

Formati supportati:
Input:  - TGA
        - SCI (Simply compressed image, il formato definito per il progetto)
        - RAW
Output: - TGA
        - SCI
        - RAW

Esempio di funzionamento:
Per comprimere una immagine RAW:
./progetto -it raw -w 400 -h 300 -bs 8 -q 85 image.raw compressed.sci
Per decomprimenre una immagine SCI:
./progetto compressed.sci image.tga

$

Download

Someone is standing on the ethernet cable, causeing a kink in the cable. — Sysadmin (BOFH)


free counters