2009-06-18 20 views
2

私はC++でTWAINを使用していますが、DPIを手動で設定しようとしているため、スキャンダイアログでは表示されません。それらのために保存されます。私はDPIを手動で設定する必要がありますが、動作させることはできません。私はICAP_XRESOLUTIONとICAP_YRESOLUTIONを使って機能を設定しようとしました。画像の情報を見ると、ICAPを使って何を設定しても、常に同じ解像度が表示されます。スキャンされた画像の解像度を設定するもう1つの方法はありますか、どこに書類でも見つけられないほどのステップが必要ですか?C++でTWAINを使用したスキャンのDPIを設定するには

ありがとうございました

答えて

5

ICAP_XRESOLUTIONとICAP_YRESOLUTIONを使用してスキャナーのスキャン解像度を設定します。少なくとも、いくつかのHPスキャナーで動作します。

コード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; 
} 

値(奇妙しかし真)TWAINによって定義された浮動小数点形式であるタイプTW_FIX32でなければなりません。

私はそれがあなたのために働くことを望みます!

+0

FloatToFIX32が身元不明の識別子として返される理由はありますか? – netadptr0719

+0

申し訳ありません、追加するのを忘れてしまいました。 –

+0

あなたは主人公です、私はこれがフロントページのGoogleになることを願っています。これはほとんどどこにも書かれていないからです。それが言及されているところでは、それは詳細には言及されていません。 – netadptr0719

0

これはうまくいくはずです。

しかし残念ながら私たちは完璧な世界に住んでいません。 TWAINドライバーは、そこで最もバギードライバーです。ほとんどのドライバではが決してになっていないため、TWAINによるスキャンプロセスの制御は大きな問題でした。

私が知っている限り、twain-driversのテストスイートはないので、それぞれの動作がわずかに異なります。

私は90日にOCRアプリケーションを書いて、これらの問題にも対処しなければなりませんでした。私が終わったのは、サポートされているスキャナの一覧とスキャナモジュールのlotのハックとそれぞれのドライバの回避策でした。

たとえば、次のようにICAP_XRESOLUTIONを実行します。TWAINドキュメントsais解像度を32ビットfloatとして送信する必要があります。代わりに整数を使用して設定しようとしましたか?または、floatとして送信しますが、floatに整数のビット表現を入れたり、その逆にします。これはすべてあなたが作業しているドライバーで動作する可能性があります。それはまったく動かないかもしれません。

それ以来、状況は大きく変わったのではないかと思います。だから、そこにあるマシンの少なくとも半分で動くことを幸運にする。

+0

私は上記のint、float、intをすべてfloatにしようとしました。それはちょうど良い演奏をしたくないようです。私はそれがかなりバギードライバーであることに気づいた。私は仕事のために何かを得るために、1日目からTWAINと戦わなければなりませんでした。これは唯一のものですが、私は回避策を見つけることができませんでした。私はちょうど私が欠けているか何かが存在すると仮定しました – netadptr0719

+0

組み込みのGUIを使用してイメージを配信するtwainドライバを取得することに問題はありません。私はそれ以上の機能はすべて実験的だと考えています。 –

+0

OH - btw。組み込みのTWAIN GUIを使用していない主流アプリケーションの数はいくつですか?私に推測させてください:なし..それはなぜそう考えていますか? –

関連する問題