Please tell me why I'm getting error: I have seen many example of this both in this forum and other places.
Type mismatch: cannot convert from ImageIcon to Image[b]
Thanks in advance
here's my code, I m using fileupload to load my images:
<%@ page import="java.util.List"%>
<%@ page import="java.util.Iterator"%>
<%@ page import="java.io.File" %>
<%@ page import="java.io.IOException"%>
<%@ page import="java.io.*"%>
<%@ page import="java.awt.image.ImageFilter"%>
<%@ page import="java.awt.Color"%>
<%@ page import="java.awt.image.ImageProducer"%>
<%@ page import="java.awt.image.ReplicateScaleFilter"%>
<%@ page import="java.awt.image.FilteredImageSource"%>
<%@ page import="javax.swing.*"%>
<%@ page import="java.awt.image.BufferedImage"%>
<%@ page import="java.awt.Image"%>
<%@ page import="java.awt.Graphics"%>
<%@ page import="java.awt.Toolkit"%>
<%@ page import="com.sun.image.codec.jpeg.JPEGCodec"%>
<%@ page import="com.sun.image.codec.jpeg.JPEGImageEncoder"%>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<center><table border="2">
<tr><td><h1>Your files uploaded </h1></td></tr>
<%
//setting the target w + h
int targetWidth=0;
int targetHeight=0;
//session values used to rename loaded image.
String adID = "EM225";
session.setAttribute("adID", adID);
String fileName = null;
// String imageid = request.getParameter("imgageID");
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
} else {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
System.out.println("Unable to load image" + e.getMessage());
}
Iterator itr = items.iterator();
while(itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if (item.isFormField()) {
//String name = item.getFieldName(); //This will get the field names. for eg. if u have a hidden field this line will get the hidden filed name.
//value = item.getString();
//out.println(value);
} else {
try {
File fullFile = new File(item.getName());
fileName = fullFile.getName();
String id = (String)session.getAttribute("adID");
String newName = id+fileName;
//passing renamed uploaded image.
Image sourceImage = new ImageIcon(Toolkit.getDefaultToolkit().getImage(newName));
// Calculate the target width and height
float scale = 50/100;
targetWidth = (int)(sourceImage.getWidth(null)*scale);
targetHeight = (int)(sourceImage.getHeight(null)*scale);
BufferedImage resizedImage = this.scaleImage(sourceImage,targetWidth,targetHeight);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(baos);
encoder.encode(resizedImage);
byte[] b = baos.toByteArray();
// File tosave = new File(getServletContext().getRealPath("/"),resizedImage);
// item.write(tosave);
} catch (Exception e) {
System.out.println("Unable to save the image" + e.getMessage());
}
}
}
}
%>
<%!
private BufferedImage scaleImage(Image sourceImage, int width, int height){
ImageFilter filter = new ReplicateScaleFilter(width,height);
ImageProducer producer = new FilteredImageSource
(sourceImage.getSource(),filter);
Image resizedImage = Toolkit.getDefaultToolkit().createImage(producer);
return this.toBufferedImage(resizedImage);
}
private BufferedImage toBufferedImage(Image image){
image = new ImageIcon(image).getImage();
BufferedImage bufferedImage = new BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_RGB);
Graphics g = bufferedImage.createGraphics();
g.setColor(Color.white);
g.fillRect(0,0,image.getWidth(null),image.getHeight(null));
g.drawImage(image,0,0,null);
g.dispose();
return bufferedImage;
}
%>
</table>
</center>
</table>
</center>