Galera,
Estou utilizando o imagecropper do Primefaces para fazer várias tarjas de censura em uma imagem, mas quando faço uma tarja de censura a imagem só é atualizada quando clico F5, preciso que ela seja atualizada para realizar mais tarja de censura na foto, sabe aquelas tarjas pretas ou quadriculadas para não reconhecer a pessoa, tipo que o google street view faz ?
Alguém sabe como atualizar a imagem na página quando recorto com imagecropper e preencho com preto o retangulo que recortei ?
Abaixo o código:
<?xml version='1.0' encoding='UTF-8' ?><ui:composition xmlns:ui=“http://java.sun.com/jsf/facelets”
xmlns=“http://www.w3.org/1999/xhtml”
xmlns:f=“http://java.sun.com/jsf/core”
xmlns:h=“http://java.sun.com/jsf/html”
xmlns:c=“http://java.sun.com/jsp/jstl/core”
xmlns:p=“http://primefaces.org/ui”
template="./…/resources/templateMaster.xhtml">
<ui:define name="tarefas">
<p:fieldset legend="Tarja Ocultar">
<h:form id="formTarjaOcultar">
<p:outputPanel id="outputPanelUpload">
<p:growl id="msg0" showDetail="true" />
<h:panelGrid columns="2" id="panelImagem">
<p:imageCropper immediate="true" value="#{cropper.croppedImage}" image="#{cropper.imagemVeiculo}" initialCoords="225,75,300,125" id="imageCropper" />
<p:graphicImage id="localCroppedImage" value="/temp/1_0.jpg" cache="false"/>
<p:commandButton value="Obliterar" action="#//{cropper.crop()}" icon="ui-icon-scissors" />
<h:outputText value=" "/>
</h:panelGrid>
</p:outputPanel>
</h:form>
</p:fieldset>
</ui:define>
</ui:composition>
Abaixo o manage bean:
package br.com.samtweb.controller;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import javax.faces.application.Application;
import javax.faces.application.FacesMessage;
import javax.faces.application.ViewHandler;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.imageio.ImageIO;
import javax.imageio.stream.FileImageOutputStream;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;
import org.primefaces.component.imagecropper.ImageCropper;
import org.primefaces.component.imagecropper.ImageCropperRenderer;
import org.primefaces.model.CroppedImage;
/**
- @autor: Adalberto Kamida
-
@dt. inclusao: 24/11/2015
*/
@ManagedBean(name=“cropper”)
@RequestScoped
public class Cropper {
private CroppedImage croppedImage;
private String imagemVeiculo;
private String newImageName;
public Cropper(){
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
setImagemVeiculo("/temp/1_0.jpg");
}
public String crop() throws IOException{
if(croppedImage == null)
return null;
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
BufferedImage image = ImageIO.read(new File(servletContext.getRealPath("") + File.separator + "temp" + File.separator + "1_0.jpg"));
Graphics2D graphics = image.createGraphics();
graphics.setColor(Color.BLACK);
graphics.fillRect(croppedImage.getLeft(), croppedImage.getTop(), croppedImage.getWidth(), croppedImage.getHeight());
graphics.dispose();
File ImagemDestino = new File(servletContext.getRealPath("") + File.separator + "temp" + File.separator + "1_0.jpg");
ImageIO.write(image, "jpg", ImagemDestino);
newImageName = servletContext.getRealPath("") + File.separator + "temp" + File.separator + "1_0.jpg";
return null;
}
public CroppedImage getCroppedImage() {
return croppedImage;
}
public void setCroppedImage(CroppedImage croppedImage) {
this.croppedImage = croppedImage;
}
public String getImagemVeiculo() {
return imagemVeiculo;
}
public void setImagemVeiculo(String imagemVeiculo) {
this.imagemVeiculo = imagemVeiculo;
}
public String getNewImageName() {
return newImageName;
}
public void setNewImageName(String newImageName) {
this.newImageName = newImageName;
}
}
Imagem exemplo: