我正在尝试调整 .tif 图像的大小,然后通过将其转换为 base64 字符串将其显示在浏览器上。由于 ImageIo 默认不支持 TIF 图像,因此我添加了 imageio_alpha-1.1.jar(在此处获取 - http://www.findjar.com/jar/geoserver/jai/jars/jai_imageio-1.1-alpha.jar。 html ). 现在 ImageIO 能够注册插件,我通过这样做检查了
String[] writerNames = ImageIO.getWriterFormatNames();
writerNames 中有 TIF,这意味着 ImageIO 已经注册了插件。
我正在像这样调整图像的大小
Map resizeImage(BufferedImage imageData, int width, int height, String imageFormat){
BufferedImage thumbnail = Scalr.resize(imageData, Scalr.Method.SPEED, Scalr.Mode.FIT_EXACT ,
width, height, Scalr.OP_ANTIALIAS);
String[] writerNames = ImageIO.getWriterFormatNames();
ByteArrayOutputStream baos = new ByteArrayOutputStream()
ImageIO.write(thumbnail, imageFormat, baos)
baos.flush()
byte[] imageBytes = baos.toByteArray()
baos.close()
return [imageBytes:imageBytes, imageFormat:imageFormat]
}
String encodeImageToBase64(byte[] imageData){
return Base64.encodeBase64String(imageData)
}
BufferedImage getBufferedImage(byte[] imageData){
ByteArrayInputStream bais = new ByteArrayInputStream(imageData)
BufferedImage bImageFromConvert = ImageIO.read(bais)
bais.close()
return bImageFromConvert
}
String resizeToDimensions(byte[] imageData, String imageFormat, int width, int height){
def bimg = getBufferedImage(imageData)
Map resizedImageData = resizeImage(bimg, width, height, imageFormat)
return encodeImageToBase64(resizedImageData.imageBytes)
}
现在我正在显示这样的图像
< img src = "data:image/tif;base64,TU0AKgAAAAgADAEAAAMAAA...." />
,据我所知,base64 字符串通常以 /9j/ 开头,我无法加载 url 消息(悬停时)(可能是我错了)。当我附加 /9j/. 我收到一个错误 - “图像损坏或被截断”。我无法在这里找出问题,请帮助。