2014-11-04 2 views
0

У меня есть код, который просканировать файл и сохранить его на своем пути:Уменьшить размер изображения после сканирования?

public ImageFile Scan() 
    { 
     var device = this._deviceInfo.Connect(); 

     var item = device.Items[1]; 
     var imageFile = (ImageFile)item.Transfer(FormatID.wiaFormatJPEG); 

     return imageFile; 
    } 

    protected void btnscan_Click(object sender, EventArgs e) 
    { 
     foreach (Object scanner in scanners) 
     { 
      if (ddlSelectDevice.SelectedItem.ToString().Equals(scanner.ToString())) 
      { 
       //var d = ddlSelectDevice.SelectedIndex as Scanner; 
       var device = scanner as Scanner; 
       if (device == null) 
       { 

        return; 
       } 

       var image = device.Scan(); 

       var path = "~/Scanner/scan.jpeg"; 
       if (File.Exists(Server.MapPath(path))) 
       { 
        File.Delete(Server.MapPath(path)); 
       } 
       image.SaveFile(Server.MapPath(path)); 
       break; 
      } 
     } 
    } 

я сохранить этот файл в базе данных по обращенным к байту:

private byte[] image2Byte() 
    { 
     string filePath = null; 
     Byte[] bytes = null; 

     if (File.Exists(Server.MapPath("~/Scanner/scan.jpeg"))) 
     { 
      filePath = Server.MapPath("~/Scanner/scan.jpeg"); 
      return bytes = File.ReadAllBytes(filePath); 
     } 
     else 
     { 
      filePath = Server.MapPath("~/Scanner/None.jpg"); 
      return bytes = File.ReadAllBytes(filePath); 
     } 

    } 

Но мои изображения обычно имеют большой размер (до 400KB) и создает проблему при загрузке. Как уменьшить размер изображения?

ответ

2

Чтобы уменьшить качество файла JPEG, вы можете использовать ImageProcessor. Качество для 80% подходит для большинства случаев использования.

using (ImageFactory imageFactory = new ImageFactory(preserveExifData:true)) 
{ 
    imageFactory.Load(inStream) 
       .Quality(80) 
       .Save(outStream); 
} 
+1

[ImageProcessor] (http://imageprocessor.org/) FTW +1 – Chris