.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/ を追加するとき。「画像が破損しているか切り捨てられています」というエラーが表示されます。ここで問題がわかりません、助けてください。