gpt4 book ai didi

image - 我们可以在 JSF 托管 bean 本身中基于 org.primefaces.model.UploadedFile 获取图像的高度和宽度吗?

转载 作者:行者123 更新时间:2023-12-04 23:50:51 26 4
gpt4 key购买 nike

我们可以获取通过 <p:fileUpload> 上传的图片的尺寸吗?在其基于 org.primefaces.model.UploadedFile 的监听器中在 JSF 托管 bean 本身中?

import java.io.IOException;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

public void fileUploadListener(FileUploadEvent event) throws IOException
{
UploadedFile uploadedFile = event.getFile();
//Do something to obtain the height and the width of the uploaded image here.
}

将图像存储在磁盘上后,可以通过各种方式获得这些尺寸,例如,
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;

File file = new File("File path");
byte[] byteArray = IOUtils.toByteArray(uploadedFile.getInputstream());
// Or byte[] byteArray = uploadedFile.getContents();
FileUtils.writeByteArrayToFile(file, byteArray);

BufferedImage image=ImageIO.read(file);
int width = image.getWidth();
int height = image.getHeight();

但是我们是否可以在文件实际存储到磁盘之前获取这些维度,以便在服务层之前对其进行验证?

我目前正在使用,
  • PrimeFaces 4.0
  • JSF 2.2.6


  • 在 JSF 托管 bean 中将图像写入磁盘是笨拙的并且无法完成,因为它需要更多关于文件大小调整的代码等等。此外,如果有关该图像的其他信息已成功存储到相关数据库中,则文件应仅写入磁盘。另外, PrimeFaces file upload validators don't work .

    最佳答案

    是的你可以。您所需要的只是某种 InputStream以便 ImageIO可以创建 BufferedImage - 使用 ByteArrayInputStream !

    byte[] image = uploadedFile.getContents();
    BufferedImage bi = ImageIO.read(new ByteArrayInputStream(image));
    int width = bi.getWidth();
    int height = bi.getHeight();
    System.out.println("Width: " + width + ", height: " + height);

    关于image - 我们可以在 JSF 托管 bean 本身中基于 org.primefaces.model.UploadedFile 获取图像的高度和宽度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22631069/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com