Frage

Ich bin mit TWAIN in C ++ und ich versuche, die DPI manuell einzustellen, so dass ein Benutzer nicht mit dem Scan-Dialog, sondern die Seite nur Scans mit Standardeinstellung angezeigt wird, und wird für sie gespeichert werden. Ich brauche die DPI manuell einstellen, aber ich kann nicht scheinen, um es Arbeit zu bekommen. Ich habe versucht, die Fähigkeit, die Einstellung der ICAP_XRESOLUTION und die ICAP_YRESOLUTION verwenden. Als ich bei der Info Bild sehen, obwohl es zeigt immer die gleiche Auflösung, egal was ich sie setzen die ICAPS zu verwenden. Gibt es eine andere Möglichkeit, die Auflösung eines gescannten in Bild zu setzen oder ist es nur ein weiterer Schritt, die getan werden muss, dass ich nicht in der Dokumentation kann überall?

Danke

War es hilfreich?

Lösung

Ich benutze ICAP_XRESOLUTION und die ICAP_YRESOLUTION die Scanauflösung für einen Scanner einzustellen, und es funktioniert zumindest für eine Reihe von HP-Scanner.

Code-snipset:

float x_res = 1200;
cap.Cap = ICAP_XRESOLUTION;
cap.ConType = TWON_ONEVALUE;
cap.hContainer = GlobalAlloc(GHND, sizeof(TW_ONEVALUE));
if(cap.hContainer)
{
    val_p = (pTW_ONEVALUE)GlobalLock(cap.hContainer);
    val_p->ItemType = TWTY_FIX32;
    TW_FIX32 fix32_val = FloatToFIX32(x_res);
    val_p->Item = *((pTW_INT32) &fix32_val);
    GlobalUnlock(cap.hContainer);
    ret_code = SetCapability(cap);
    GlobalFree(cap.hContainer);
}

TW_FIX32 FloatToFIX32(float i_float)
{
    TW_FIX32 Fix32_value;
    TW_INT32 value = (TW_INT32) (i_float * 65536.0 + 0.5);
    Fix32_value.Whole = LOWORD(value >> 16);
    Fix32_value.Frac = LOWORD(value & 0x0000ffffL);
    return Fix32_value;
}

Der Wert vom Typ TW_FIX32 sein sollte, die ein Floating-Point-Format, das von twain (seltsam, aber wahr) definiert ist.

Ich hoffe, dass es für Sie funktioniert!

Andere Tipps

Es sollte die Art und Weise arbeiten.

Aber leider sind wir nicht in einer perfekten Welt leben. TWAIN-Treiber gehören zu den Buggy Fahrer da draußen. Die Steuerung des Scanvorganges mit TWAIN hat immer ein großen Kopfschmerzen, weil die meisten Fahrer haben nie ohne den Scan-Dialog getestet.

Soweit ich weiß, gibt es auch keine Testsuite für twain-Treiber, so dass jeder von ihnen verhalten sich etwas anders.

Ich schrieb eine OCR-Anwendung zurück in den 90. und hatte auch mit diesen Fragen zu befassen. Was ich am Ende war eine Liste der unterstützten Scanner und ein Scannermodul mit viel von Hacks und Workarounds für jeden anderen Treiber.

Nehmen Sie die ICAP_XRESOLUTION zum Beispiel: Die TWAIN-Dokumentation sais Sie die Auflösung als 32-Bit-Float zu schicken. Haben Sie versucht, anstatt es mit einer ganzen Zahl zu setzen? Oder als Schwimmer senden, aber die Bit-Darstellung einer ganzen Zahl in dem Schwimmer, oder umgekehrt gesetzt. All dies könnte für den Fahrer arbeiten Sie gerade arbeiten. Oder es könnte nicht funktionieren.

Ich bezweifle, dass die Situation viel hat sich seitdem verändert. So viel Glück sie arbeiten an mindestens der Hälfte der Maschinen bekommen, die es gibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top