JImageResizer - Um Redimensionador de Imagens feito em Java1
Gabriel Silva2, Jeysel Martins3, Jair Alves Barbosa4
Resumo
Imagens e fotografias tem sido amplamente compartilhadas atualmente em sites e redes
sociais. Devido a essa popularidade, diversos sites se depararam com o problema de
armazenamento dessas imagens, e por isso, tem implementado controles de envio para evitar
que imagens muito grandes sejam armazenadas em suas bases de dados. Como resultado, os
usuários destes sites tem dificuldade em compartilhar imagens muito grandes, por não
conhecerem aplicativos que redimensionam imagens de forma fácil. Pensando nisso, resolveu-se
elaborar um aplicativo que suprisse esta necessidade.
Palavras-chave: Redimensionamento de imagens; Java
1.
Introdução
Graças aos avanços tecnológicos, atualmente podemos compartilhar e visualizar imagens
usando computadores. Esses avanços possibilitam a criação de imagens cada vez mais bem
definidas e que, ocupam mais espaço em memória, o que tem se mostrado um grande problema
principalmente para serviços relacionados ao compartilhamento de imagens. Para se ter uma
idéia do problema enfrentado num serviço de compartilhamento de imagens caso seja utilizada
uma camera fotográfica de 12 Megapixels, cada imagem gerada por esta câmera terá, em média,
5 MegaBytes, isso significa que, se em uma rede social existirem 10 milhões de usuários e cada
um deles fornecer uma imagem usada como referência, o sistema terá de armazenar algo em
torno de 47 Terabytes. Por este motivo, sites e redes sociais que trabalham com imagens tem
implementado técnicas para diminuir essa necessidade de armazenamentode imagens. Como
exemplo, podemos usar grandes redes sociais, como o Facebook e o Twitter que possibilitam ao
usuário o envio de fotografias para compartilhar com seus amigos e seguidores, e que, para
controlar o tamanho ocupado em memória pelas imagens enviadas pelos usuários,
implementaram sistemas que bloqueiam o envio de imagens muito grandes.
1
Trabalho desenvolvido como projeto de pesquisa no curso Bacharelado em Ciência da Computação da
Universidade Católica de Brasília;
2 Aluno do curso de Bacharelado em Ciência da Computação; [email protected]
3 Professor Orientador da FSSW da UCB; [email protected]
4 Professor Co-Orientador da FSSW da UCB; [email protected]
Obviamente, apesar de ser uma medida de segurança, essa funcionalidade causa
transtornos para os usuários que tentam compartilhar fotografias grandes e não possuem ou não
conhecem nenhuma aplicação que redimensione imagens. Atualmente, as aplicações disponíveis
com a funcionalidade de redimensionamento de imagens exigem muito do computador, como o
Adobe Photoshop, que além de ser um software pago exige recursos de hardware nem sempre
disponíveis e ainda não disponibilizam redimensionamento de forma fácil e intuitiva.O
desenvolvimento do JImageResizer tem como objetivo resolver esse problema fornecendo o
redimensionamento de imagens sem exigir muito do computador, de uma foma fácil, com uma
interface amigável e intuitiva para que mesmo um usuário com pouco ou nenhum conhecimento
de informática possa redimensionar suas imagens e utilizá-las para compartilhar em sites e redes
sociais.
2.
Metodologia
Para o desenvolvimento do JImageResizer, foi adotada a linguagem de programação Java
que permite o desenvolvimento de uma aplicação independente de plataforma (portabilidade) e
possui as API's (Application Programmin Interfaces) e ferramentas necessárias para a
implementação da aplicação. As principais ferramentas utilizadas no desenvolvimento foram:
API Image I/O: essa API é especializada na leitura e escrita de imagens. Toda a leitura e
escrite de imagens no sistema foi feita utilizando essa API pois a mesma possibilita a abstração
dos bytes que representam uma imagem em um único objeto, utilizado como entrada para
renderizar a imagem na interface gráfica e para redimensionar a imagem utilizando a AWT;
Swing: uma window toolkit para desenvolvimento de interfaces gráficas. Essa ferramenta
foi utilizada para renderizar a interface gráfica por adotar um método de renderização
independente do sistema operacional. Apesar de ser um pouco mais lenta, renderiza interfaces
similares mesmo em sistemas operacionais diferentes;
AWT: (Abstract Window Toolkit) utilizada para realizar o redimensionamento das
imagens. A AWT foi utilizada por fornecer classes especializadas em tratamento de imagens e
dentre esses “tratamentos”, ela também realiza redimensionamento.
O sistema foi organizado em três partes simples, que podem ser vistas na imagem abaixo:
•
•
•
Leitura do arquivo: O usuário escolhe a imagem que deseja redimensionar. Nessa
etapa, o sistema lê o arquivo escolhido e, com ajuda da API Image I/O, converte os
bytes do arquivo em um objeto Image. Essa abstração permite que a saída dessa etapa
seja compatível com a entrada da próxima etapa;
Redimensionamento: O sistema, apresenta a imagem para o usuário no seu tamanho
original e possibilita ao mesmo que informe novos valores para altura e comprimento.
O sistema passa a ouvir as requisições do usuário e a cada modificação da altura ou
largura da imagem o sistema utiliza as classes AWT para redimensionar a imagem e
apresentar o novo resultado para o usuário. Enquanto redimensiona, o usuário pode
visualizar a imagem no novo tamanho e o espaço estimado que a imagem usará de
memória;
Escrita da imagem: Após redimensionar a imagem, o usuário pode salvá-la em
arquivo. Nessa etapa, o sistema, novamente, utiliza a API Image I/O dessa vez para
escrever o objeto Image redimensionado em um arquivo escolhido pelo usuário.
Essas três etapas são apresentadas para o usuário por meio de uma interface gráfica criada
utilizando Swing. O desenvolvimento da interface teve como objetivo deixar o sistema intuitivo
e fácil de usar. O Swing possibilita a criação componentes gráficos com uma programação
Orientada a Objetos, o que abstrai a complexidade da criação de interfaces e possibilita maior
flexibilidade no desenvolvimento delas.
A saída do sistema é a imagem redimensionada. Como característica adicional, o sistema
possibilita ainda a redução do tamanho ocupado em memória mesmo sem redimensionar a
imagem, caso a imagem fonte tenha uma resolução muito alta, pela redução da qualidade da
mesma.
4.
Resultados
A aplicação final possibilita o redimensionamento de imagens através de uma interface
gráfica intuitiva, o que garante que mesmo usuários com pouco conhecimento técnico consigam
utilizá-la, em um computador sem grandes recursos de hardware e em diferentes plataformas, por
ter sido desenvolvida em Java.
5.
Conclusão
O JImageResizer se mostrou muito útil no redimensionamento de imagens para
compartilhamento, o que criou a possibilidade de módulos futuros que consigam redimensionar
várias imagens ao mesmo tempo e armazenar o resultado em arquivos compactados para
compartilhamento via email, por exemplo.
6.
Referências Bibliográficas
ORACLE. API Swing. Disponível em
http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/package-summary.html. Acessado em 15
de abril de 2011.
ORACLE. API AWT. Disponível em
http://download.oracle.com/javase/1.4.2/docs/api/java/awt/package-summary.html. Acessado em 15 de
abril de 2011.
ORACLE. Class ImageIO. Disponível em
http://download.oracle.com/javase/6/docs/api/javax/imageio/ImageIO.html. Acessado em 15 de abril
de 2011.
Download

JImageResizer - Universidade Católica de Brasília