Alterar tamanho da imagem ao ir para o banco

Boa tarde galera,

É possível fazer um upload de fotos E no momento do upload da foto alterar o tamanho da mesma ?

Estou fazendo o upload assim:


NoticiaDao nd = new NoticiaDao();
DiskFileItemFactory fileupload = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(fileupload);

String imagem = null;

for (Iterator it = list.iterator(); it.hasNext();) {
				FileItem item = (FileItem) it.next();
				if (!item.isFormField()) {
					imagem = item.getName();
					imagem = (new File(imagem)).getName();
					item.write(new File(path + "/" + imagem));
					item.getOutputStream().close();

		}

nd.createImg(imagem);

Muito obrigado galera.

Aguardo resposta.

Meu conselho eh nao armazenar imagens no banco de dados…Como diria meu professor, imagens em banco de dados eh problema futuro.

Uma maneira que resolvi meus problemas foi adicionar minhas imagems em um ftp, assim sempre q preciso exibilas vou no ftp e pego a q preciso, por exemplo em um cadastro de cliente cujo a imagem eh referenciada por seu cpf, pego o cpf do cliente e trago atraves do ftp.

eh uma solucao

o caso eh, evite gravar imagens em banco de dados…por experiencia propria, eh problema futuro.

t+ e boa sorte.

Você pode usar o método draw do BufferedImage para isso. Evite só usar o getScaledInstance.
http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html

Ou então, se precisar de qualidade, usar uma biblioteca própria para isso (eu já usei, é muito boa):
http://www.imageresize4j.com/

não sei se te ajuda mas ai vai um componente do prime
http://www.primefaces.org/showcase/ui/imageCropper.jsf

fernandopaiva - só estou armazenando no banco o nome da imagem, a imagem fica em uma pasta e eu redireciono na hora de exibir na JSP.

ViniGodoy - Muito obrigado, irei olhar os arquivos que você me enviou.

jaissonduarte - Obrigado pelo link, mas estou utilizando SERVLET + JSP, não estou usando JSF.

Muito obrigado.

Só corrigindo, a biblioteca que usei é free e é essa aqui:
http://code.google.com/p/java-image-scaling/

Boa tarde vini, desculpa te atrapalhar…

Eu adicionei o que você me passou no projeto que estou desenvolvendo, mas só tive um problema… Sabe me dizer como eu faço pra resgatar o nome da imagem pra gravar a mesma no banco ?

E ele deu um erro: [color=red]javax.imageio.IIOException: Can’t read input file![/color]

String imagem = null;
		Integer idgaleria = null;

		DiskFileItemFactory fileupload = new DiskFileItemFactory();
		ServletFileUpload sfu = new ServletFileUpload(fileupload);


		String path = "C:/Intranet/WebContent/galerias";

		try {

			sfu.setSizeMax(50 * 1024 * 1024);

			List list = sfu.parseRequest(request);

			for (Iterator it = list.iterator(); it.hasNext();) {
				FileItem item = (FileItem) it.next();
				if (!item.isFormField()) {

					imagem = item.getName();
					imagem = (new File(imagem)).getName();

					BufferedImage img = ImageIO.read(new File(path + "/" + imagem));

					BufferedImage novaImagem = new BufferedImage(600, 400, img
							.getType());

					item.write(new File(path + "/" + novaImagem));
					item.getOutputStream().close();

				}

				if (item.getFieldName().equals("idgaleria")) {
					idgaleria = new Integer(item.getString());

				}

			}

			GaleriaDao gd = new GaleriaDao();

			try {

				try {

					
					gd.enviarGaleria(idgaleria, imagem);

		request.setAttribute("mensagem", "Imagem cadastrada com sucesso.");

Muito obrigado amigo,

aguardo resposta.

Vc tem duas opções:
a) Salvar o nome do arquivo da imagem no banco:

File fileNovaImagem = new File(path + "/" + novaImagem);

E aí salva:

fileNovaImagem.getAbsolutePath(); (ou getCanonicalPath() se quiser o caminho completo)

b) Salvar a imagem em si num blob (não recomendo).