Получение изображений Windows - свойства задающего устройства в C#

У меня была та же проблема, и она была вызвана модулем перезаписи URL. Я прокомментировал

<system.webServer>  
<modules>
<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />

и сайт загрузил веб и скрипт resource.axd.

5
задан C. Ross 26 May 2009 в 19:39
поделиться

1 ответ

Я тоже работаю над проектом сканирования, и примеров WIA очень мало. Этот код - то, что вы ищете для установки размера кровати, DPI и т. Д. Ознакомьтесь с методом SetProperty с примером того, как работать с set_Value.

class Scan
{
    // Scanner only device properties (DPS)
    public const int WIA_RESERVED_FOR_NEW_PROPS = 1024;
    public const int WIA_DIP_FIRST = 2;
    public const int WIA_DPA_FIRST = WIA_DIP_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
    public const int WIA_DPC_FIRST = WIA_DPA_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
    public const int WIA_DPS_FIRST = WIA_DPC_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
    public const int WIA_DPS_DOCUMENT_HANDLING_STATUS = WIA_DPS_FIRST + 13;
    public const int WIA_DPS_DOCUMENT_HANDLING_SELECT = WIA_DPS_FIRST + 14;
    public const int FEEDER = 1;
    public const int FLATBED = 2;
    public const int DUPLEX = 4;
    public const int FEED_READY = 1;

    WIA.CommonDialog _dialog = new WIA.CommonDialog();
    WIA.Device _scanner;

    public void ADFScan()
    {

        _dialog = new CommonDialogClass();
        _scanner = _dialog.ShowSelectDevice(WIA.WiaDeviceType.ScannerDeviceType, false, false);


        foreach (Property item in _scanner.Items[1].Properties)
        {
            switch (item.PropertyID)
            {
                case 6146: //4 is Black-white,gray is 2, color 1
                    SetProperty(item, 2);
                    break;
                case 6147: //dots per inch/horizontal 
                    SetProperty(item, 100);
                    break;
                case 6148: //dots per inch/vertical 
                    SetProperty(item, 100);
                    break;
                case 6149: //x point where to start scan 
                    SetProperty(item, 0);
                    break;
                case 6150: //y-point where to start scan 
                    SetProperty(item, 0);
                    break;
                case 6151: //horizontal exent 
                    SetProperty(item, (int)(8.5 * 100));
                    break;
                case 6152: //vertical extent 
                    SetProperty(item, 11 * 100);
                    break;
            }
        }
        ImageFile image = (ImageFile)_scanner.Items[1].Transfer(FormatID.wiaFormatPNG);
        System.IO.File.Delete("tmp.png");
        image.SaveFile("tmp.png");
    }

    private void SetProperty(Property property, int value)
    {
        IProperty x = (IProperty)property;
        Object val = value;
        x.set_Value(ref val);
    }


    public void test()
    {
        bool WantsToScan = true;
        while (WantsToScan) ScanAndSaveOnePage();

    }


    static void Main(string[] args)
    {
        new Scan().test();
    }
}
10
ответ дан 13 December 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: