我只是复制了primefaces showcase上的示例,但选择图像的区域没有显示。在展示中,它看起来很简单。
我的页面:
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:form>
<p:imageCropper value="#{uploadMB.croppedImage}" id="imageCropper"
image="/images/banner.jpg" />
</h:form>
</ui:composition>
我的BackBean:
@ManagedBean
public class UploadMB implements Serializable{
private static final Logger logger = Logger.getLogger(UploadMB.class.getName());
private CroppedImage croppedImage;
private String newImageName;
public String crop() {
if(croppedImage == null)
return null;
setNewImageName(getRandomImageName());
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String newFileName = servletContext.getRealPath("") + File.separator + "images" + File.separator + "barca" + File.separator + getNewImageName() + ".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;
}
private String getRandomImageName() {
int i = (int) (Math.random() * 100000);
return String.valueOf(i);
}
public String getNewImageName() {
return newImageName;
}
public CroppedImage getCroppedImage() {
return croppedImage;
}
public void setCroppedImage(CroppedImage croppedImage) {
this.croppedImage = croppedImage;
}
public void setNewImageName(String newImageName) {
this.newImageName = newImageName;
}
有没有可能缺少一些库?或者是另一个配置选项?我刚刚下载了primefaces3.5jar并将其放入我的类路径中。
谢谢
发布于 2013-07-13 13:20:24
您的映像是否位于%WEBAPP_ROOT%/images/banner.jpg
您可以通过HTTP Url (浏览器)访问您的图像吗?
发布于 2014-03-19 09:23:23
你是否为裁剪建立了initialCoords
属性:"x,y,w,h"?您还可以设置aspectRatio
和minSize
。
https://stackoverflow.com/questions/17242917
复制