How to Display Image in Jsp Using Spring | Code Factory

Reference Link : Link

Method 01 : Using Controller Method

Jsp

<img src="/admin/getImage/${userPhoto}" width="150" height="150" title="${user.firstName} ${user.lastName}">

Controller

@RequestMapping(value = "/getImage/{imageId}")
@ResponseBody
public byte[] getImage(@PathVariable String imageId, HttpServletRequest request) {
try {
return attachmentUtil.getImageBytes(request.getSession().getServletContext().getRealPath("/"), "profile_pic", imageId, request);
} catch (Exception e) {
e.printStackTrace();
}
return new byte[0];
}

Util

public byte[] getImageBytes(String path, String directoryName, String fileName, HttpServletRequest request) {
ByteArrayOutputStream byteArrayOutputStream;
BufferedImage bufferedImage;
byte[] imageInByte;
try {
byteArrayOutputStream = new ByteArrayOutputStream();
bufferedImage = ImageIO.read(new File(path + directoryName + fileName));
ImageIO.write(bufferedImage, "jpg", byteArrayOutputStream);
byteArrayOutputStream.flush();
imageInByte = byteArrayOutputStream.toByteArray();
byteArrayOutputStream.close();
return imageInByte;
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

Method 02 : Using base64

Jsp

<img src="data:image/jpeg;base64,${userPhoto}" width="150" height="150" title="Testing">

Controller

@GetMapping(value = "/editUser/{id}")
public String editUser(@PathVariable Long id, Model model, HttpServletRequest request) {
try {
User user = userRepository.getOne(id);
model = userMasterCombo(model);
model.addAttribute("user", user);
model.addAttribute("isEdit", true);
model.addAttribute("userPhoto", attachmentUtil.convertFileIntoBase64String(request.getSession().getServletContext().getRealPath("/"),
"profile_pic", user.getUserPhoto(), request));
} catch (Exception e) {
e.printStackTrace();
}
return "admin/addUser";
}

Util

public String convertFileIntoBase64String(String path, String directoryName, String fileName, HttpServletRequest request) throws IOException {
File file;
FileInputStream fileInputStream = null;
ByteArrayOutputStream byteArrayOutputStream = null;
try {
file = new File(path + directoryName + fileName);
fileInputStream = new FileInputStream(file);
byteArrayOutputStream = new ByteArrayOutputStream();
int b;
byte[] buffer = new byte[1024];
while ((b = fileInputStream.read(buffer)) != -1) {
byteArrayOutputStream.write(buffer, 0, b);
}

byte[] fileBytes = byteArrayOutputStream.toByteArray();
fileInputStream.close();
byteArrayOutputStream.close();
byte[] encoded = Base64.encodeBase64(fileBytes);
String encodedString = new String(encoded);
return encodedString;
} catch (Exception e) {
e.printStackTrace();
} finally {
if(byteArrayOutputStream != null) {
byteArrayOutputStream.close();
}
if(fileInputStream != null) {
fileInputStream.close();
}
}
return new String();
}

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store