12
回答
linux图片上传为空 名称有的路径也正确就是大小为空
滴滴云服务器,限时包月0.9元,为开发者而生>>>   

如题  项目做了一个头像裁剪功能 windows下一切正常 把项目部署到linux下 就出现上传为空的问题

有没有哪位仁兄遇到过类似问题 或者有解决方法 或者说下大致的解决思路

举报
213
发帖于7年前 12回/709阅
共有12个答案 最后回答: 7年前

路径都注意到了 都改正确了 图像上传都传到指定目录下了 所有的都正确 就是图像大小为空

我把上传中 断点出错的几个方法 帖出来

public static BufferedImage toBufferedImage(Image image) {

  if (image instanceof BufferedImage) {

   return (BufferedImage) image;

  }

  // This code ensures that all the pixels in the image are loaded

  image = new ImageIcon(image).getImage();

  // Determine if the image has transparent pixels; for this method's

  // implementation, see Determining If an Image Has Transparent Pixels
  boolean hasAlpha = hasAlpha(image);
  // Create a buffered image with a format that's compatible with the
  // screen
  BufferedImage bimage = null;
  GraphicsEnvironment ge = GraphicsEnvironment
    .getLocalGraphicsEnvironment();
  try {
   // Determine the type of transparency of the new buffered image
   int transparency = Transparency.OPAQUE;
   if (hasAlpha) {
    transparency = Transparency.BITMASK;
   }
   // Create the buffered image
   GraphicsDevice gs = ge.getDefaultScreenDevice();
   GraphicsConfiguration gc = gs.getDefaultConfiguration();
   bimage = gc.createCompatibleImage(image.getWidth(null), image
     .getHeight(null), transparency);
  } catch (HeadlessException e) {
   e.printStackTrace();
   return null;
  }
  if (bimage == null) {
   // Create a buffered image using the default color model
   int type = BufferedImage.TYPE_INT_RGB;
   if (hasAlpha) {
    type = BufferedImage.TYPE_INT_ARGB;
   }
   bimage = new BufferedImage(image.getWidth(null), image
     .getHeight(null), type);
  }
  // Copy image to buffered image
  Graphics g = bimage.createGraphics();
  // Paint the image onto the buffered image
  g.drawImage(image, 0, 0, null);
  g.dispose();
  return bimage;
 }
这是上传图片的一个方法 中间出现错误 但调试 什么没任何提示错误 只是 跳过部分代码执行 没有retuen 任何值 

我用的ImageMaigck和JMagick没有出现这样问题啊~

一切正常。

就像红薯说的,注意路径的写法就OK了~

还有就是,你使用的是什么组件进行头像剪裁的啊?是不是在linux下没有安装好啊?

你可以先不做任何图像处理,直接写入磁盘,如果一切正常就可以锁定问题出在这个方法上。

如果确定是这个方法的问题,那就好办了,撇开web环境,直接写main方法来调试,很快能找到问题的。

应该是这个方法 网上说到一个错误“程序采用到Java.awt进行图形处理”linux下不太一样 解决在java_opts中加上一句 -Djava.awt.headless=true  这个试了 但还是不行  我在找找原因 谢谢 红薯 跟 jing31

引用来自#8楼“213”的帖子

应该是这个方法 网上说到一个错误“程序采用到Java.awt进行图形处理”linux下不太一样 解决在java_opts中加上一句 -Djava.awt.headless=true  这个试了 但还是不行  我在找找原因 谢谢 红薯 跟 jing31

不客气,既然不太一样,那就找一个一样的处理方法啊~

红薯推荐的这个就可以:http://www.oschina.net/bbs/thread/8248

如果想效果和效率更高一点推荐使用ImageMaigck和JMagick。

前端不用该,用jcrop就OK~

引用来自#8楼“213”的帖子

应该是这个方法 网上说到一个错误“程序采用到Java.awt进行图形处理”linux下不太一样 解决在java_opts中加上一句 -Djava.awt.headless=true  这个试了 但还是不行  我在找找原因 谢谢 红薯 跟 jing31

另外我怎么觉得这个方法有点多余吗?没做什么事啊?用 ImageIO.read 方法,直接返回的就是 BufferredImage 对象。

顶部