我有一个表单,用户可以上传图像并裁剪它。
上传后,图像将用于裁剪的裁剪器组件
我希望以固定的尺寸显示它(如果用户的图像太大)并且我没有设法做到这一点。
上传裁剪器组件后,以原始大小显示图像(如果宽度为1200px,则填充所有屏幕)
我无法使用css,因为div大小是由primefaces
脚本生成的,我无法使用脚本,因为它在图片上传之前加载
答案 0 :(得分:4)
上传时只需调整图片大小
public String handleImageFileUpload(FileUploadEvent event){
File file = new File("PATH_TO_UPLOAD_DIR");
file.mkdirs();
file = new File("PATH_TO_UPLOAD_FILE");
try( InputStream is = event.getFile().getInputstream();
OutputStream out = new FileOutputStream(file) ) {
BufferedImage img = ImageIO.read(is);
BufferedImage scaledImg;
if(img.getWidth() >= img.getHeight())
scaledImg = Scalr.resize(img, Scalr.Method.ULTRA_QUALITY, Scalr.Mode.FIT_TO_HEIGHT, 300, 400);
else
scaledImg = Scalr.resize(img, Scalr.Method.ULTRA_QUALITY, Scalr.Mode.FIT_TO_WIDTH, 400, 300);
ImageIO.write(scaledImg, "jpg", out);
} catch (IOException e) {
e.printStackTrace();
}
}