كيف يمكنني ضبط DPI من الفحص باستخدام TWAIN في C ++

StackOverflow https://stackoverflow.com/questions/1012642

  •  06-07-2019
  •  | 
  •  

سؤال

وأستخدمه TWAIN في C ++ وأنا أحاول أن تعيين DPI يدويا بحيث لا يتم عرض المستخدم مع الحوار مسح ولكن بدلا من ذلك على الصفحة بفحص فقط مع مجموعة التخلف عن السداد ويتم تخزين لهم. ولست بحاجة لتعيين DPI يدويا ولكن لا أستطيع أن يبدو للحصول على عمل. لقد حاولت وضع القدرة باستخدام ICAP_XRESOLUTION وICAP_YRESOLUTION. عندما ننظر إلى المعلومات للصورة على الرغم من أنه يظهر دائما القرار نفسه بغض النظر عن ما تعيينها لاستخدام ICAPs. هناك طريقة أخرى لتعيين دقة لالممسوحة ضوئيا في الصورة أم أن هناك مجرد خطوة إضافية التي تحتاج إلى أن يتم ذلك لا أستطيع أن أجد في وثائق في أي مكان؟

والشكر

هل كانت مفيدة؟

المحلول

وأنا استخدم 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;
}

ويجب أن تكون القيمة من نوع TW_FIX32 وهو شكل نقطة عائمة يحددها توين (غريب ولكنه حقيقي).

وآمل أن يعمل لك!

نصائح أخرى

ويجب أن تعمل بنفس الطريقة.

ولكن للأسف نحن لا نعيش في عالم مثالي. برامج التشغيل TWAIN هي من بين أكثر السائقين عربات التي تجرها الدواب هناك. وقد تم السيطرة على عملية المسح الضوئي مع TWAIN دائما صداعا كبيرا لأن معظم السائقين <م> لا تم اختباره دون الحوار المسح الضوئي.

وبقدر ما أعرف ليس هناك أيضا اختبار جناح لتوين السائقين، لذلك كل واحد منهم سوف تتصرف مختلف قليلا.

وكتبت تطبيق OCR مرة أخرى في 90 وكان عليها أن تتعامل مع هذه القضايا أيضا. ما انتهى بي الأمر كان وجود قائمة من الماسحات الضوئية المعتمدة ووحدة الماسح الضوئي مع الكثير من الخارقة والعمل في أنحاء لكل برنامج تشغيل مختلف.

وخذ ICAP_XRESOLUTION على سبيل المثال: وثائق الأجهزة العليا للرقابة TWAIN لديك لإرسال القرار بمثابة تعويم 32 بت. لقد حاولت تعيين باستخدام عدد صحيح بدلا من ذلك؟ أو إرسالها كما تعويم لكن وضع التمثيل قليلا من عدد صحيح إلى تعويم، أو العكس بالعكس. كل هذا يمكن أن تعمل من أجل برنامج التشغيل الذي نعمل معه. أو أنها لا يمكن أن تعمل على الإطلاق.

وأشك في الوضع قد تغير كثيرا منذ ذلك الحين. جيد جدا الحظ في الحصول على عمل في نصف على الأقل من الأجهزة الموجودة هناك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top