[RESOLVIDO] Cortar imagem e salvar na maquina

4 respostas
java
D

[RESOLVIDO] Estou tentando cortar imagem e salvar não estou obtendo sucesso.

String arquivo = request.getParameter("arquivo");
		
		file = new File(arquivo);
		                             
		// Transformando em BufferedImage 
		BufferedImage bufferedImage = ImageIO.read(file);
		                             
		// Cortando as imagens passando as cordenadas
		BufferedImage subImage = new BufferedImage(width, height, bufferedImage.getType());
		
		System.out.println("subImage = " + subImage);
		                              
		// escrevendo novamente a imagem cortada.
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		ImageIO.write(subImage, "jpg", baos);
		baos.flush();
		byte[] imageInByte = baos.toByteArray();
		baos.close();
		byte[] xoredImage = new byte[imageInByte.length];
		
		for (int i = 0; i< imageInByte.length;i++){
             xoredImage[i] = (byte) (imageInByte[i] ^ 0xFF);
        }
		                              
		// convertendo byte array para BufferedImage
       InputStream in = new ByteArrayInputStream(xoredImage);            
       BufferedImage bImageFromConvert = ImageIO.read(in); // aqui ele diz que esta null
       
        // erro esta nessa linha
       ImageIO.write(bImageFromConvert, "jpg", new File("C:\\teste\\"));

Meu erro:

java.lang.IllegalArgumentException: image == null!

at javax.imageio.ImageTypeSpecifier.createFromRenderedImage(Unknown Source)

at javax.imageio.ImageIO.getWriter(Unknown Source)

at javax.imageio.ImageIO.write(Unknown Source)

at action.ActionOrc.arquivo(ActionOrc.java:97)

at action.ActionOrc.doPost(ActionOrc.java:53)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:500)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1376)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Unknown Source)

4 Respostas

E

Tenta desta forma:

String caminho = System.getProperty(“user.home”);

BufferedImage imagemAtual = ImageIO.read(new File(caminho+ "/IMAGEM_INTEIRA.png"));
   // pega tamanhos imagem atual
   int w = imagemAtual.getWidth();
   int h = imagemAtual.getHeight();
   int[] pixels = imagemAtual.getRGB(0, 0, w, h, null, 0, w);

   imagemAtual.setRGB(0, 0, 10, 20, pixels, 0, w);
   // define o novo tamanho e salva a imagem
   int novaAltura = 120;
   int novaLargura = 60;
   ImageIO.write(imagemAtual.getSubimage(0,0 ,novaLargura, novaAltura), "PNG", new File(caminho+ "/NOVAIMAGEM.png"));
E

Faça desta forma.

Aqui funcionou. Basta passar as dimensões com valores coerentes e menores que a imagem original

D

funcionou aqui também. Obg

E

Marque como resolvido e altere o título como [RESOLVIDO]

:wink:

Criado 17 de outubro de 2017
Ultima resposta 17 de out. de 2017
Respostas 4
Participantes 2