سؤال

لا أستطيع الحصول على بلدي كانون PIXMA MP150 على مسح مسح لون من رمز C #. التعليمة البرمجية التالية ينتج عنه صورة أبيض وأسود، أو إذا قمت بتغيير قيمة 6146-2 ثم يتم إنشاء صورة رمادية. وأود أن تكون قادرة على مسح اللون من التعليمات البرمجية. وأنا أعلم أن الماسح الضوئي لا صور ملونة لأنني يمكن أن تفعل واحدة من خلال معالج إكس بي في "الماسحات الضوئية والكاميرا". يمكن لأي شخص أن يساعدني معرفة ما قيمة أنا لا تحديد لمسح اللون. جميع الوثائق وأمثلة يمكن أن أجد فقط تقول لتغيير القيمة من 6146.

وشكرا لأخذ الوقت الكافي لقراءة هذا!

    private void ScanAndSaveOnePage ()
    {
        WIA.CommonDialog Dialog1 = new WIA.CommonDialogClass();
        WIA.DeviceManager DeviceManager1 = new WIA.DeviceManagerClass();
        System.Object Object1 = null;
        System.Object Object2 = null;
        WIA.Device Scanner = null;

        Scanner = Dialog1.ShowSelectDevice(WIA.WiaDeviceType.ScannerDeviceType, false, false);

        WIA.Item Item1 = Scanner.Items[1];

        setItem(Item1, "6146", 1);
        setItem(Item1, "6147", 150);
        setItem(Item1, "6148", 150);
        setItem(Item1, "6151", 150 * 8.5);
        setItem(Item1, "6152", 150 * 11);

        WIA.ImageFile Image1 = new WIA.ImageFile();
        WIA.ImageProcess ImageProcess1 = new WIA.ImageProcess();
        Object1 = (Object)"Convert";
        ImageProcess1.Filters.Add(ImageProcess1.FilterInfos.get_Item(ref Object1).FilterID, 0);

        Object1 = (Object)"FormatID";
        Object2 = (Object)WIA.FormatID.wiaFormatBMP;
        ImageProcess1.Filters[1].Properties.get_Item(ref Object1).set_Value(ref Object2);

        Object1 = null;
        Object2 = null;

        Image1 = (WIA.ImageFile)Item1.Transfer(WIA.FormatID.wiaFormatBMP);

        string DestImagePath = @"C:\test.bmp";
        File.Delete(DestImagePath);
        Image1.SaveFile(DestImagePath);
    }

    private void setItem (IItem item, object property, object value)
    {
        WIA.Property aProperty = item.Properties.get_Item(ref property);
        aProperty.set_Value(ref value);
    }
هل كانت مفيدة؟

المحلول

في حالة أي شخص آخر يتساءل، لديك لتعيين "4104" كذلك. افتراضيا تم تعيينه إلى 1 بت عمق. أن لا حيلة لي.

وsetItem(Item1, "4104", 24);

في أجل معرفة ذلك، واضطررت الى تعداد كافة الخصائص ونرى ما وضعت لهم ما يلي:

foreach (Property propertyItem in item.Properties)
{
    if (!propertyItem.IsReadOnly)
    {
        Console.WriteLine(String.Format("{0}\t{1}\t{2}", propertyItem.Name, propertyItem.PropertyID, propertyItem.get_Value()));
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top