ImageCropper
ImageCropper is used to extract a certain part of an image and assign it to a new image value. ImageCropper is capable of both cropping local or external images.
Source
<h:form>
<h:panelGrid columns="2">
<p:imageCropper value="#{imageCropperBean.croppedImage}"
image="/images/barca/camp_nou.jpg"
initialCoords="225,75,300,125"/>
<p:graphicImage id="localCroppedImage"
value="barca/#{imageCropperBean.newImageName}.jpg" />
</h:panelGrid>
<p:commandButton value="Crop"
action="#{imageCropperBean.crop}"
update="localCroppedImage"/>
</h:form>
package org.primefaces.examples.view;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.faces.context.FacesContext;
import javax.imageio.stream.FileImageOutputStream;
import javax.servlet.ServletContext;
import org.primefaces.ui.model.imagecropper.CroppedImage;
public class ImageCropperBean {
private CroppedImage croppedImage;
public CroppedImage getCroppedImage() {
return croppedImage;
}
public void setCroppedImage(CroppedImage croppedImage) {
this.croppedImage = croppedImage;
}
public String crop() {
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String newFileName = servletContext.getRealPath("") + File.separator + "images" + File.separator + "barca" + File.separator+ "croppedImage.jpg";
FileImageOutputStream imageOutput;
try {
imageOutput = new FileImageOutputStream(new File(newFileName));
imageOutput.write(croppedImage.getBytes(), 0, croppedImage.getBytes().length);
imageOutput.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
