javax.imageio.IIOException: Unsupported Image Type

xuexijava 2010-05-07 02:49:17
做一个上传图片时,用Java代码自动生成小图报以下异常
javax.imageio.IIOException: Unsupported Image Type
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:910)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:885)
at javax.imageio.ImageIO.read(ImageIO.java:1422)
at javax.imageio.ImageIO.read(ImageIO.java:1282)
at com.util.MainImageUtil.saveImageAsJpg(MainImageUtil.java:61)
at com.yourcompany.struts.action.ProductAction.adminAddProduct(ProductAction.java:130)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.util.CloseSessionFilter.doFilter(CloseSessionFilter.java:27)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:38)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:619)

这个切小图的代码是在网上找的不太明白,高人帮看看是哪里出错了
以下是切小图的代码:
public class MainImageUtil {
public static BufferedImage resize(BufferedImage source, int targetW,
int targetH) {
// targetW,targetH分别表示目标长和宽
int type = source.getType();
BufferedImage target = null;
double sx = (double) targetW / source.getWidth();
double sy = (double) targetH / source.getHeight();
// 这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放
// 则将下面的if else语句注释即可
/*if (sx > sy) {
sx = sy;
targetW = (int) (sx * source.getWidth());
} else {
sy = sx;
targetH = (int) (sy * source.getHeight());
}*/
if (type == BufferedImage.TYPE_CUSTOM) { // handmade
ColorModel cm = source.getColorModel();
WritableRaster raster = cm.createCompatibleWritableRaster(targetW,
targetH);
boolean alphaPremultiplied = cm.isAlphaPremultiplied();
target = new BufferedImage(cm, raster, alphaPremultiplied, null);
} else
target = new BufferedImage(targetW, targetH, type);
Graphics2D g = target.createGraphics();
// smoother than exlax:
g.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
g.dispose();
return target;
}

public static void saveImageAsJpg(String fromFileStr, String saveToFileStr,
int width, int hight) throws Exception {
BufferedImage srcImage;
// String ex =
// fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length());
System.out.println("源图片地址:"+fromFileStr);
System.out.println("小图片地址:"+saveToFileStr);
String imgType = "JPEG";
if (fromFileStr.toLowerCase().endsWith(".png")) {
imgType = "PNG";
}
// System.out.println(ex);
File saveFile = new File(saveToFileStr);
File fromFile = new File(fromFileStr);
srcImage = ImageIO.read(fromFile);
if (width > 0 || hight > 0) {
srcImage = resize(srcImage, width, hight);
}
ImageIO.write(srcImage, imgType, saveFile);

}
}
...全文
1483 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
点个赞吧 2011-09-15
  • 打赏
  • 举报
回复
可是有木有方法让即使是CMYK格式的图片也可以上传?????
点个赞吧 2011-09-15
  • 打赏
  • 举报
回复
楼上v5
sohoxxd 2011-01-19
  • 打赏
  • 举报
回复
遇到同样的问题,把图片的模式用ps从CMYK转为RGB就ok了。
jawgxy 2010-07-31
  • 打赏
  • 举报
回复
我也遇到同样问题 等待中
wubaodong 2010-06-08
  • 打赏
  • 举报
回复
楼主这就走了?不说说问题是怎么解决的????
newskyLCX_108 2010-05-13
  • 打赏
  • 举报
回复
我也遇到你的问题,你自己怎么搞定的,能否告知
xuexijava 2010-05-07
  • 打赏
  • 举报
回复
自己搞定。。。。。
结贴
xuexijava 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hq1305018 的回复:]

能正常切图的和不能的一点儿区别都没有吗?
[/Quote]
俺太菜,从外表看都是jpg后缀名
刚查了下cmyk模式,但是我不知道怎么区分,当然现在最主要的是怎么处理这个cmyk模式的图片,让代码能够自动生成小图
能否给段代码看看
hq1305018 2010-05-07
  • 打赏
  • 举报
回复
能正常切图的和不能的一点儿区别都没有吗?
xuexijava 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 nangonghaopeng 的回复:]

图片格式不对吧
是cmyk模式的图片吗
[/Quote]
cmyk模式?怎么讲?能说仔细点吗?
nangonghaopeng 2010-05-07
  • 打赏
  • 举报
回复
图片格式不对吧
是cmyk模式的图片吗
xuexijava 2010-05-07
  • 打赏
  • 举报
回复
同样是jpg格式的图片,有的格式要以切图,有的则报以上异常
什么问题?
迷糊,高手给指点下

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧