fazendo foto 3×4 em java

On January 26, 2011, in fotos, java, programacao, by athanazio
0

Hoje de tarde perguntei para a secretária da minha esposa que estava rodeando pela casa : ” Ae vai querer umas fotos 3×4 ? to fazendo umas e vou mandar imprimir … quer ? ” a resposta foi ótima !!! “pra que ? é tudo digital hoje … ” pronto eu com cara de tacho, maledito condomínio que esta pedindo fotos 3×4 para carteirinha da piscina, não podia ter uma camera por lá ?

Bem choradeira de lado, acabei resgatando um código que tinha feito em 2005 para montar uma folha de impressão de fotos 5×7, porque na época achei um absurdo pagar o preço pedido, ainda acho hehehe, dai fiz as fotos com o ipod mesmo, dei uma arrumada basica no código para suportar mais dimensões do que o 5×7 e pronto !! recebe como input uma imagem jpg e monta uma outra de saida no tamanho 1000×1500 que eh para ser impressa no tamanho 10×15.

clique na imagem para ver como fica o resultado :

o código em si não é complicado, é soh ter alguns cuidados na hora de compor a imagem de resultado e todos ficaram felizes, segue o código

package br.com.thz.photo;

import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.ImageIcon;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class ProtoComposer {

	private static final int BORDER = 5;

	public static void main(String[] args) throws FileNotFoundException, IOException {

		createImage3_4("mario.jpg");
		createImage3_4("cachorro.jpg");

	}

	private static void createImage3_4(String fileName) throws FileNotFoundException, IOException {
		createImage(fileName, 300, 400);
	}

	private static void createImage5_7(String fileName) throws FileNotFoundException, IOException {
		createImage(fileName, 500, 700);
	}

	private static void createImage(String fileName, int width, int height) throws FileNotFoundException, IOException {
		int x = 0;
		int y = 0;
		int maxWidth = 1000;
		int maxHeight = 1500;

		BufferedImage buffer = new BufferedImage(maxWidth, maxHeight, BufferedImage.TYPE_INT_RGB);
		Graphics2D g2 = buffer.createGraphics();
		ImageIcon image = new ImageIcon(fileName);

		g2.setColor(Color.WHITE);
		g2.fillRect(0, 0, maxWidth, maxHeight);

		// font definition
		Font font = new Font("Tahoma", Font.BOLD, 30);
		g2.setFont(font);

		// draw images with the dimension informed
		while ((x + width) <= maxWidth) {
			while ((y + height) <= maxHeight) {
				drawImageWithTimeStamp(g2, image.getImage(), x, y, width, height);
				y += height;
			}
			x += width;
			y = 0;
		}

		generateJPG(buffer, width +"_" + height + "_" + fileName);
	}

	private static void drawImageWithTimeStamp(Graphics2D g2, Image image, int x, int y, int w, int h) {
		g2.drawImage(image, x + BORDER, y + BORDER, w - BORDER, h - BORDER, null);

		String text = getDate();
		FontMetrics metrics = g2.getFontMetrics();
		Rectangle2D rect = metrics.getStringBounds(text, 0, text.length(), g2);
		g2.setColor(Color.BLACK);

		int lateral = (int) ((w - rect.getWidth()) / 2.0);
		Rectangle toFill = new Rectangle();
		toFill.x = x + lateral - BORDER;
		toFill.y = (int) (y + h - (2 * BORDER) - rect.getHeight());
		toFill.height = (int) rect.getHeight();
		toFill.width = (int) rect.getWidth() + BORDER;

		g2.fillRect(toFill.x, toFill.y, toFill.width, toFill.height);
		g2.setColor(Color.WHITE);
		g2.drawString(text, toFill.x, (int) (toFill.y + rect.getHeight() - (2 * BORDER)));

	}

	public static String getDate() {
		SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy");
		return sdf.format(new Date());
	}

	private static void generateJPG(BufferedImage buffer, String fileName) throws FileNotFoundException, IOException {

		FileOutputStream file = new FileOutputStream(fileName);

		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(file);
		JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(buffer);
		param.setQuality(1.0F, true);
		encoder.setJPEGEncodeParam(param);

		encoder.encode(buffer);
		file.close();
	}

}
Tagged with:
 

fusca verde

On June 3, 2010, in trecos, by athanazio
0

Tagged with:
 

fila de pilhas

On March 26, 2010, in trecos, by athanazio
0


juro que nao fui eu que fiz … eu jah vi pronto hehehehe

Tagged with:
 

casinha maneira em botafogo

On March 26, 2010, in fotos, by athanazio
1


Por alguma razão misteriosa a guarda municipal fechou a 19 de fevereiro agora pela manhã, e tive de fazer o contorno pela dona mariana, dai vi esta casinha maneira, nao consegui ler placa nenhuma, sera que alguem mora ali ?

Tagged with:
 

adoradores da cerveja

On March 3, 2010, in fotos, by athanazio
0

Em minhas pesquisas teologicas esta é a primeira vez que vejo uma manifestação pública dos adoradores da cerveja, muito bonito as pessoas assumirem sua opção religiosa em público.

:)

ninho de fio

On February 8, 2010, in trecos, by athanazio
0

Tagged with:
 

soninho na livraria da travessa

On December 30, 2009, in trecos, by athanazio
0

soninho na livraria da travessa

Tagged with:
 

por do sol vermelho

On December 19, 2009, in trecos, by athanazio
1

por do sol vermelho
como eu queria ver um por do sol destes sumindo no mar … :) deve ser lindo

Tagged with:
 

fotos nortevillage 2009-dez-16

On December 16, 2009, in trecos, by athanazio
0

nortevillage 20091216 foto 1
nortevillage 20091216 foto 2
de passagem pelo leroy vi as barreiras sucumbindo !! :)

Tagged with:
 

pqp

On December 4, 2009, in fotos, by athanazio
0

pqp

tem muito tempo que eu queria ter feito esta foto ! achei a imaginação maravilhosa !!!

Tagged with:
 

janelas limpas

On November 25, 2009, in fotos, by athanazio
0

janelas limpas

e você pensava que as janelas de fora ficavam limpas por magica não é ? :)

Tagged with:
 

visita ao mercado

On November 18, 2009, in fotos, by athanazio
0

visita ao mercado

Tagged with:
 

fotos de 18-nov-2009

On November 18, 2009, in fotos, by athanazio
0

grafiti mulher verde

esquerda por favor central do brasil

Tagged with:
 

presidente vargas chuvosa

On November 11, 2009, in fotos, by athanazio
0

chuva na presidente vargas
Hoje apos algum furduncio que ocorreu pelas bandas da uruguaiana, que deve ter sido um incêndio, temos chuva ! o que me faz lembrar a pergunta de todos nós : “alguém já viu um filhote de pombo ?”

Tagged with:
 

café na mesa

On July 17, 2009, in fotos, by athanazio
0

o-cafe-sobre-a-mesa
receber café na cama é bem legal, mas café na mesa com certeza não é legal … este evento hacatombico de ontem a tarde me fez perceber que não escrevo no blog tem algumas semanas … e isto eh ruim porque minha veia verborragica fica atrofiada, e dai acabo enfrentando coisas bizzaras como ontem um pedinte que cismou de questionar se eu tinha ou nao cinco centavos … vc nao tem cinco centavos ?? claro que tenho mas nao quero te dar. pode ser que eu seja muito ranheta, ou q Deus tenha sido generoso, ou que o cara so hqueira um trocado para comer … mas caramba !! vai arrumar o que fazer, ficar acoando os outros, me olhando de cara feia, jah basta a minha propria cara feia.

Desabafo eh uma droga mesmo … =) mas q eu tenho um dificuldade absurda de dizer que nao tenho dinheiro, ah isto eu tenho … porque nao digo mesmo, soh agradeço e digo tchau, mas este figura insisiu vc nao tem CINCO centavos, meu discurso acabou, soh pude fechar a cara, e ouvir o sujeito, que veio de marte, resmungar e seguir dizendo … e ainda faz cara feia ….

Tagged with: