Java Thumbnailator 库:发生 IIOException:读取 PNG 元数据时出错
Java Thumbnailator Library: IIOException occurred : Error reading PNG metadata
我使用 this 开源库来创建图像缩略图。我的任务是将文件转换为 Base64 字符串,然后将此字符串作为请求参数发送给 REST 服务。我使用此函数在客户端将文件转换为 Base64 字符串:
public String convertToBase64(File file) throws IOException {
byte[] bytes = new byte[(int)file.length()];
FileInputStream fileInputStream = new FileInputStream(file);
fileInputStream.read(bytes);
return new String(Base64.encodeBase64(bytes), "UTF-8");
}
然后我检索此编码字符串并将此字符串作为请求参数发送到 REST 服务。
在 REST 服务中,我使用此函数解码此字符串:
public static void uploadBase64Image(String file, String filename) throws Exception {
filename = filename.replaceAll(" ", "_");
byte[] data = DatatypeConverter.parseBase64Binary
(file.replaceFirst("data:image/jpg;base64,", "")
.replaceFirst("data:image/jpeg;base64,", "")
.replaceFirst("data:image/png;base64,", ""));
File tempFile = File.createTempFile("base64", filename);
FileUtils.writeByteArrayToFile(tempFile, data);
FileEntity fe = FileEntity.processAndCompressFile(tempFile, "pic");
fe.save();
renderJSON(fe.getJson());
}
The DatatypeConverter
is located under package javax.xml.bind;
当我尝试制作此临时文件的缩略图时出现问题。我尝试制作缩略图的代码部分:
private static String compressFileAndGetFilenameWithExt(File originalFile, int height, String filename, String fileExt) throws Exception {
StringBuilder newFileName = new StringBuilder(filename)
.append("_")
.append(height)
.append(fileExt);
File compressedFile = new File(filesLocation + newFileName.toString());
Thumbnails.Builder<File> builder = Thumbnails.of(originalFile);
builder = builder.height(height);
builder.toFile(compressedFile);
return newFileName.toString();
}
我得到 IIOException occurred : Error reading PNG metadata 在这行代码中:builder.toFile(compressedFile);
有人可以解释并帮助我解决这个问题吗?
我找到包的解决方案了。这是因为我没有配置 headers 来获取文件
我使用 this 开源库来创建图像缩略图。我的任务是将文件转换为 Base64 字符串,然后将此字符串作为请求参数发送给 REST 服务。我使用此函数在客户端将文件转换为 Base64 字符串:
public String convertToBase64(File file) throws IOException {
byte[] bytes = new byte[(int)file.length()];
FileInputStream fileInputStream = new FileInputStream(file);
fileInputStream.read(bytes);
return new String(Base64.encodeBase64(bytes), "UTF-8");
}
然后我检索此编码字符串并将此字符串作为请求参数发送到 REST 服务。
在 REST 服务中,我使用此函数解码此字符串:
public static void uploadBase64Image(String file, String filename) throws Exception {
filename = filename.replaceAll(" ", "_");
byte[] data = DatatypeConverter.parseBase64Binary
(file.replaceFirst("data:image/jpg;base64,", "")
.replaceFirst("data:image/jpeg;base64,", "")
.replaceFirst("data:image/png;base64,", ""));
File tempFile = File.createTempFile("base64", filename);
FileUtils.writeByteArrayToFile(tempFile, data);
FileEntity fe = FileEntity.processAndCompressFile(tempFile, "pic");
fe.save();
renderJSON(fe.getJson());
}
The
DatatypeConverter
is located underpackage javax.xml.bind;
当我尝试制作此临时文件的缩略图时出现问题。我尝试制作缩略图的代码部分:
private static String compressFileAndGetFilenameWithExt(File originalFile, int height, String filename, String fileExt) throws Exception {
StringBuilder newFileName = new StringBuilder(filename)
.append("_")
.append(height)
.append(fileExt);
File compressedFile = new File(filesLocation + newFileName.toString());
Thumbnails.Builder<File> builder = Thumbnails.of(originalFile);
builder = builder.height(height);
builder.toFile(compressedFile);
return newFileName.toString();
}
我得到 IIOException occurred : Error reading PNG metadata 在这行代码中:builder.toFile(compressedFile);
有人可以解释并帮助我解决这个问题吗?
我找到包的解决方案了。这是因为我没有配置 headers 来获取文件