求助万能的tg,有关于图片压缩和图片的文件头。转换后图上传

  • c
    cc0128
    使用java的awt里工具压缩图片分辨率。代码大概这样。。
    BufferedImage inputbig = new BufferedImage(weight, height,BufferedImage.TYPE_INT_BGR);
    inputbig.getGraphics().drawImage(input, 0, 0, weight, height,null); // 画图
    ImageIO.write(inputbig, "jpg", newFile);

    目前的问题是,大部分图片都正常。部分图片就偏色。。

    我找了转换颜色有问题的图片。
    用ue打开发现文件头和其他正常的jpg图片不一样。。虽然都是jpg结尾的文件。。而且windows都能打开。。
    正常的应该是
    FF D8 FF E0 00 10 4A 46 49 46 00 01
    这个图片是
    FF D8 FF DB

    图片已经奉上。。

    求解决方法。。
    没有方法思路也成。。

    这到底是神马图片。。

    10楼附件
    是转换后的图片


    [本帖最后由 cc0128 于 2011-10-27 09:28 编辑]
  • c
    cc0128
    tgfc也没办法么
  • 2
    2339923
    FileOutputStream newimage=new FileOutputStream(image_name);
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
    JPEGEncodeParam jep=JPEGCodec.getDefaultJPEGEncodeParam(inputbig);
    jep.setQuality(per, true);
    encoder.encode(inputbig, jep);
    newimage.close();

    第四行的per是百分比,float类型。楼主试试用这个输出文件,不用ImageIO.write(inputbig, "jpg", newFile);
  • c
    cc0128
    一样的问题。
  • c
    cc0128
    up
  • s
    sectionboy
    把你压错的图贴上来。FF E0是JFIF信息标志,和具体解压无关。FFDB是DQT开始,这个不会错的。
  • c
    cc0128
    压缩包里就是错误的图片。
    直接传dicuzz会改对。。。
  • s
    sectionboy
    你後存的顏色有誤的圖片啥樣?

    [本帖最后由 sectionboy 于 2011-10-27 08:50 编辑]
  • c
    cc0128
    回头到给公司了上传上来哈。
  • c
    cc0128
    里面有4张图。2张转换前。2张转换后
  • s
    sectionboy
    G存成了R,其他两个不见了。
  • c
    cc0128
    谢谢哈,有啥解决的方法没。
    能把这种格式的图转成jfif的么。
    完全不知道如何处理这种图。我直接用的java自带的api弄的。
    原理完全不懂啊。
    现在两眼一抹黑。。这bug完全不知道咋办、。。

    [本帖最后由 cc0128 于 2011-10-27 10:56 编辑]
  • s
    sectionboy
    (可能是废话)能升的级都升了没?:D
  • c
    cc0128
    果然是废话。
  • c
    cc0128
    不管了。做个识别反正这种图片都不让上传。
  • s
    sectionboy
    bug a bug

    [本帖最后由 sectionboy 于 2011-10-28 05:13 编辑]
  • c
    cc0128
    谢谢哈。试过了。不管是bgr。rgb。rbg全没戏。。
  • s
    sectionboy
    是ImageIO.read有bug,所以要换成 javax.swing.ImageIcon
  • c
    cc0128
    感谢,搞定了