terça-feira, 28 de dezembro de 2010

Text 2 Image em Java

Pessoal,

Segue abaixo uma classe em java que converte um texto em uma imagem. Tem muitos parametros que estão estáticos e ela precisa ser melhorada... Isso mesmo, carece JavaDoc e torná-la mais genérica. A idéa aqui é ser mais um material na Net que pode servir nas pesquisas sobre o assunto. Quando eu tiver um tempinho eu melhoro ela.

import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;

import javax.imageio.ImageIO;

/**
* Classe utilitária para criar uma imagem a partir de um texto.
* Essa classe não tem como objetivo ser utilizada para recursos de captcha.
* Possivel uso dessa classe: pares de um teclado virtual.
* Exemplo:
* Text2ImageHelper.criar("1 ou 9","jpeg",response.getOutputStream());
*
*/
public class Text2ImageHelper {

/**
* Ponto de atenção, caso tenhamos muitas imagens em cache. Impacto direto na memoria do servidor.
*/
private static Map images = new HashMap();

/**
* Convert o texto em uma imagem
* metodo utilitario para criar o stream da imagem dinamica.
* @param text
* @return
* @throws IOException
*/
public static void criar(String text, String tipoImagem, OutputStream os) throws IOException {
BufferedImage buffer = getBufferImage(text);
ImageIO.write(buffer, "jpeg", os);
}

/**
* Usa o cache para recuperar o Buffer. Só cria novo se ainda nao existir no cache.
* @param text
* @return
*/
private static BufferedImage getBufferImage(String text) {
BufferedImage buffer = images.get(text);
if (buffer == null){
buffer = criarBufferImage(text);
images.put(text, buffer);
}
return buffer;
}

/**
* Criar o buffer de imagem. A imagem tem um tamanho de 30kb.
* @param text
* @return
*/
private static BufferedImage criarBufferImage(String text) {
final int WIDTH = 80;
int HEIGHT = 50;
BufferedImage buffer =
new BufferedImage(WIDTH,
HEIGHT,
BufferedImage.TYPE_INT_RGB);
Graphics g = buffer.createGraphics();
g.setColor(Color.GRAY);
g.fillRect(0,0,WIDTH,HEIGHT);
g.setColor(Color.BLACK);
Font font1 = new Font("Helvetica", Font.BOLD, 22);
g.setFont(font1);
FontMetrics fm = g.getFontMetrics();
Rectangle2D area = fm.getStringBounds(text, g);
g.drawString(text, (int)(WIDTH - area.getWidth())/2,(int)(HEIGHT + area.getHeight())/2);
return buffer;
}

}

quarta-feira, 22 de dezembro de 2010

Mousse de chocolate branco

Minha namorada gostou muito dessa receita...

Ingredientes

Calda

* 1 tablete de NESTLÉ CLASSIC® Meio Amargo
* meio colher (sopa) de rum
* 2 colheres (sopa) de manteiga

Mousse

* 1 tablete de GALAK®
* 2 ovos
* 4 colheres (sopa) de açúcar
* 1 lata de Creme de Leite NESTLÉ®
* 1 envelope de gelatina em pó sem sabor (12g)
* 1 colher e meia (chá) de essência de baunilha


* Para derreter o chocolate, misture-o com creme de leite e leve-o ao banho maria -fica muito mais fácil. E cuidado com choque termico, NUNCA, e NUNCA misture-o com alguma coisa fria. aff... acredite... você não vai gostar do resultado.

Receita na Nestle

quarta-feira, 24 de novembro de 2010

Intecambio cristão na Austrália

Intecambio cristão na Austrália.

http://www.iasdsydney.org/?page_id=211

terça-feira, 19 de outubro de 2010

How to fix BAD FILE MODE Cron

First login as root in SSH and then change the permissions to 644 on the affected files.
chmod 644 /etc/cron.d/filename


Read more: http://www.ehow.com/how_4397618_bad-file-mode-cron-errors.html#ixzz12pXuZVKP

quinta-feira, 14 de outubro de 2010

jQuery Fundamentals book (free)

Recebi esses links de um amigo. Bem interessante.

http://jqfundamentals.com/book/book.html
http://jqfundamentals.com/

quarta-feira, 13 de outubro de 2010

InnerHTML and Select option in IE

Quando você definir a propriedade innerHTML do objeto Select no IE você terá problemas. Uma solução alternativa:


var objeto = document.getElementById("selectCidade");
var opt = document.createElement("OPTION");
opt.text=j[i].nome;
opt.value=j[i].id;
if (document.all){//IE
objeto.add(oOption);
} else{
objeto.appendChild(oOption);
}

Ajax IE Caching

Se você está com problemas de cache com Ajax e IE, uma solução workaround é usar POST over GET.