2016-09-26 3 views
0

J'essaie de numériser un document/photo en utilisant WIA (Windows Image Acquisition Library v2.0) en C#, mais quand j'augmente la résolution, il n'augmente pas la résolution au lieu d'augmenter la largeur et la hauteur de l'image, mais le la résolution reste la même. (La résolution par défaut du scanner est de 75 ppp) La variable ImageFile a toujours 96 ppp.La résolution d'affichage C# WIA n'augmente pas la résolution au lieu d'augmenter la largeur et la hauteur de l'image. en C#

par ex. si par défaut ppp 75, l'image a largeur et hauteur de 100 puis si je définis ppp à 150, l'image aura la largeur et la hauteur de 200. mais le fichier ImageFile résultant a toujours 96 ppp indépendamment de ppp que j'ai défini.

  WIA.ImageFile img = null; 
      WIA.Item Item = WiaDev.Items[1] as WIA.Item; 


      try 
      { 
       Item.Properties.get_Item("4104").set_Value(24); 
       Item.Properties.get_Item("6146").set_Value(1); 


       double OrigResolution = Convert.ToDouble(Item.Properties["6147"].get_Value().ToString()); 
       double ResDiff = 0.0; 
       int width = 0, height = 0; 
       if (OrigResolution < dpi) 
       { 
        ResDiff = 150/OrigResolution; 
        width = (int)Math.Floor((Convert.ToDouble(Item.Properties["6151"].get_Value().ToString()) * ResDiff)); 
        height = (int)Math.Floor((Convert.ToDouble(Item.Properties["6152"].get_Value().ToString()) * ResDiff)); 

        Item.Properties["6149"].set_Value(0); 
        Item.Properties["6150"].set_Value(0); 

        Item.Properties.get_Item("6147").set_Value(dpi.ToString("0.0")); 
        Item.Properties.get_Item("6148").set_Value(dpi.ToString("0.0")); 

        Item.Properties["6151"].set_Value(width); 
        Item.Properties["6152"].set_Value(height); 
       } 

       img = (ImageFile)WiaCommonDialog.ShowTransfer(Item, WIA.FormatID.wiaFormatJPEG, false); 
       img.SaveFile("D:\\Test.jpg"); 

Répondre

0

Voici l'exemple de l'échantillon, vous pouvez essayer selon elle

private void setItem(IItem item, object property, object value) 
    { 
     WIA.Property aProperty = item.Properties.get_Item(ref property); 
     aProperty.set_Value(ref value); 
    } 



    internal bool Scan(bool flatBed) 
    { 

     WIA.DeviceManager manager = new DeviceManager(); 
     bool result = false; 
     object something = 1; 
     object somethingElse; 
     WIA.Device scanner = manager.DeviceInfos.get_Item(ref something).Connect(); 
     IItem item = scanner.Items[1]; 
     setItem(item, "6146", 4); 
     setItem(item, "6147", 200); 
     setItem(item, "6148", 200); 
     setItem(item, "6151", 200 * 8.5); 
     setItem(item, "6152", 200 * 11); 
    } 

La première setItem est la couleur [4 noir et blanc, 2 niveaux de gris, 1 couleur, 0 non spécifiée] La deuxième est la résolution horizontale. Le troisième est la résolution veritcal. Le quatrième est la zone de balayage horizontal. Le cinquième est la zone de balayage vertical.

+0

Merci pour la réponse, mais ne fonctionne pas, même résultat voici l'image [lien] (https://i.imgsafe.org/a1d5b4b4cf.jpg). –