Tenho este código aqui, pode fazer o que quiser com ele:
[code]
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.swing.SwingUtilities;
public class RandomBuzzPhraseGenerator
{
private static String[] col1 = { "Caros colegas, ", "Por outro lado, ",
"Não podemos esquecer que ", "Do mesmo modo, ",
"A prática mostra que ", "Nunca é demais insistir que ",
"A experiência mostra que ", "É fundamental ressaltar que ",
"O incentivo ao avanço tecnológico, assim como ",
"Assim mesmo, " };
private static String[] col2 = { "a execução deste projeto ",
"a complexidade dos estudos efetuados ",
"a atual estrutura de organização ",
"o novo modelo estrutural aqui preconizado ",
"o desenvolvimento de formas distintas de atuação ",
"a constante divulgação das informações ",
"a consolidação das estruturas ",
"a análise dos diversos resultados ",
"o início do programa de formação de atitudes ",
"a expansão de nossa atividade " };
private static String[] col3 = { "nos obriga à análise ",
"cumpre um papel essencial na formulação ",
"auxilia a preparação e a estruturação ",
"contribui para a correta determinação ",
"assume importantes posições na definição ",
"facilita a definição ",
"prejudica a percepção da importância ",
"oferece uma boa oportunidade de verificação ",
"acarreta um processo de reformulação ",
"exige precisão e definição " };
private static String[] col4 = { "das nossas opções de desenvolvimento futuro.",
"das nossas metas financeiras e administrativas.",
"das atitudes e das atribuições da diretoria.",
"das novas proposições.",
"das opções básicas para o sucesso do programa.",
"do nosso sistema de formação de quadros.",
"das condições apropriadas para os negócios.",
"dos índices pretendidos.", "das formas de ação.",
"dos conceitos de participação geral." };
private static String[][] cols = { col1, col2, col3, col4 };
public static void main( String[] args )
{
Random random = new Random( System.currentTimeMillis() );
String line = "";
for( int i = 0; i < cols.length; i++ )
{
int r = random.nextInt( cols[ i ].length );
line += cols[ i ][ r ];
}
// aqui seria o width do retângulo
int width = 300;
// espapaço entre a borda e o texto
int padding = 10;
BufferedImage buffer = new BufferedImage( width, 5,
BufferedImage.TYPE_INT_RGB );
Graphics g = buffer.createGraphics();
FontMetrics metrics = g.getFontMetrics();
List computedLines = new ArrayList();
// lala
int avaiableWidth = width - padding * 2;
// se o texto tiver uma linha só menor que o width total, não precisa
// fazer os cálculos
if( SwingUtilities.computeStringWidth( metrics, line ) < avaiableWidth )
computedLines.add( line );
// aqui começa a macumba, note que não trato textos que contém "\n"
else
{
String newLine = null;
String remaining = line;
String temp = null;
while( !remaining.equals( "" ) )
{
newLine = line;
remaining = line;
temp = line;
// aqui a galinha preta é sacrificada
while( SwingUtilities.computeStringWidth( metrics, newLine ) > avaiableWidth )
{
temp = temp.substring( 0, temp.lastIndexOf( " " ) );
newLine = temp;
remaining = line.substring( newLine.length() );
}
// e aqui a pinga é tomada
if( !remaining.equals( "" ) )
line = line.substring( newLine.length() );
computedLines.add( newLine.trim() );
}
}
int lineHeight = metrics.getHeight();
// calculado o height total da imagem
int realHeight = computedLines.size() * lineHeight - padding + 2;
// daqui para baixo uma breve macumba para gerar a imagem final
buffer = new BufferedImage( width, realHeight,
BufferedImage.TYPE_INT_RGB );
g = buffer.createGraphics();
g.setColor( Color.WHITE );
g.fillRect( 0, 0, width, realHeight );
// bordinha preta no retângulo
g.setColor( Color.BLACK );
g.drawRect( 0, 0, width - 1, realHeight - 1 );
for( int i = 0; i < computedLines.size(); i++ )
g.drawString( computedLines.get( i ).toString(), 5, i * lineHeight
+ lineHeight );
// response.setContentType( "image/png" );
OutputStream os = null;
try
{
// os = response.getOutputStream();
os = new FileOutputStream( new File( "./test.png" ) );
ImageIO.write( buffer, "png", os );
os.flush();
}
catch( Exception e )
{
e.printStackTrace();
}
finally
{
if( os != null )
try
{
os.close();
}
catch( Exception ex )
{
ex.printStackTrace();
}
}
}
}[/code]