none
关于使用 image.GetThumbnailImage方法获得略所图后,转换为bit[]的问题。 RRS feed

  • 问题

  • System.Drawing.Bitmap myBitmap = new System.Drawing.Bitmap(“c:\a.jpg");

    System.Drawing.Image myThumbnail = myBitmap.GetThumbnailImage(100, 100, () => { return false; }, IntPtr.Zero);

    System.IO.MemoryStream ms = new System.IO.MemoryStream();

    myThumbnail.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg );  ---此处跳出异常,提示”thumbnailImg 参数错误“

    ms.Close();

    Byte[] thumbnailByteArray = ms.ToArray();

    --------------------------------------------

    这次保证不会是“c:\a.jpg"文件正在使用,因为如果正在使用的话,第一行就会提示参数错误。

     


    • 已编辑 vboykk 2013年6月18日 9:46
    2013年6月18日 9:45

答案

  • 我这边测试的时候你的代码并没有什么问题的啊,我觉得你程序中肯定有其他地方使用了a.jpg文件的,你可以在第二行代码后面释放掉原来图片的资源,即代码为:

     System.Drawing.Bitmap myBitmap = new System.Drawing.Bitmap("D:\\a.jpg");
    
    System.Drawing.Image myThumbnail = myBitmap.GetThumbnailImage(100, 100, () => { return false; }, IntPtr.Zero);
    
    myBitmap.Dispose();
    System.IO.MemoryStream ms = new System.IO.MemoryStream();
    
    myThumbnail.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg );  // 此处跳出异常,提示”thumbnailImg 参数错误“
    
    ms.Close();
    
    Byte[] thumbnailByteArray = ms.ToArray();

     

    If my post is helpful,please help to vote as helpful, if my post solve your question, please help to make it as answer. My sample

    • 已标记为答案 vboykk 2013年6月19日 0:08
    2013年6月18日 16:20

全部回复

  • 可以考虑下面实现方式来转化为字节数组:

    System.Drawing.ImageConverter   ic   =   new   ImageConverter();   //用于将   Image   对象从一种数据类型转换为另一种数据类型的类   
      byte[]   temp   =   new   byte[1];//注意,数组长度为1   
      temp   =   (byte[])ic.ConvertTo(small,temp.GetType());   


    If my post is helpful,please help to vote as helpful, if my post solve your question, please help to make it as answer. My sample

    2013年6月18日 16:11
  • 我这边测试的时候你的代码并没有什么问题的啊,我觉得你程序中肯定有其他地方使用了a.jpg文件的,你可以在第二行代码后面释放掉原来图片的资源,即代码为:

     System.Drawing.Bitmap myBitmap = new System.Drawing.Bitmap("D:\\a.jpg");
    
    System.Drawing.Image myThumbnail = myBitmap.GetThumbnailImage(100, 100, () => { return false; }, IntPtr.Zero);
    
    myBitmap.Dispose();
    System.IO.MemoryStream ms = new System.IO.MemoryStream();
    
    myThumbnail.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg );  // 此处跳出异常,提示”thumbnailImg 参数错误“
    
    ms.Close();
    
    Byte[] thumbnailByteArray = ms.ToArray();

     

    If my post is helpful,please help to vote as helpful, if my post solve your question, please help to make it as answer. My sample

    • 已标记为答案 vboykk 2013年6月19日 0:08
    2013年6月18日 16:20
  • 晕死...这段代码确实没有问题!!也不是a.jpg占用问题,不过后来就好了,无语啊!!!
    2013年6月19日 0:09