PDA

View Full Version : سوال: نحوه اسكن چند صفحه اي با ImageEn



hosseinmehr
یک شنبه 07 تیر 1394, 09:17 صبح
با سلام.
من براي اسكن با twain كار مي كردم ولي مشكلش اين بود كه رنگ تصوير را تغيير ميداد. بعدش رفتم سراغImageEn خوشبختانه تونستم راش بندازم ولي نميدونم چرا چند صفحه را اسكن نميكنه و فقط يه صفحه را ذخيره ميكنه.
اينم كدي كه استفاده كردم




//فراخواني اسكن
imgEnDbPhoto.IO.Acquire();

//ذخيره عكس اسكن شده
procedure TFbParvande.imgEnDbPhotoAcquireBitmap(Sender: TObject;
ABitmap: TIEBitmap; var Handled: Boolean);
begin
SaveBitmapTotable(Abitmap.VclBitmap);
Handled := True;
end;


هيج تنظيم ديگه اي را هم ست نكردم.

hadisalahi2
یک شنبه 07 تیر 1394, 10:38 صبح
من با این کامپوننت کار نکردم
اما Envision Image یک دمو داره که این حالت رو خیلی راحت و ساده نشون میده.

khoshblagh
دوشنبه 08 تیر 1394, 16:28 عصر
من با این کامپوننت کار نکردم
اما Envision Image یک دمو داره که این حالت رو خیلی راحت و ساده نشون میده.
با سلام
احتراما با توجه به توصیه استفاده از کامپوننت ENvsion توسط جنابعالی به یکی از کاربرانی این فروم.میخوام از این کامپوننت جهت اسکن اسناد و انتقال آن به دیتا بیس استفاده نمایم.البته با استفاده از sample آن توانستم به اسکنر وصل شوم ولی نمیدانم چطور تصویر اسکن شده را به شیی imgFImageScrollBox
منتقل نمایم.هدف این هست که بعد از دریافت تصویر از اسکنر اول کاربر آن تصویر را در شیی imgFImageScrollBox ببیند و سپس آنرا در بانک sql ثبت نماید.
فعلا مشکل من در 2 خط قرمز رنگ میباشد. پیشاپیش از لطفی که در حق من مینماید کمال تشکر را دارم.


procedure TfrmScanAsnad.btn2Click(Sender: TObject);
begin
Scanner.Acquire(Self.Acquire, 0);
end;

procedure TfrmScanAsnad.Acquire( const DibHandle : THandle;
const XDpi : Word;
const YDpi : Word;
const CallBackData : LongInt );
var
Graphic :TBitmapGraphic;
begin
Graphic := TBitmapGraphic.Create;
try
Graphic.AssignFromDibHandle(DibHandle);
Graphic.XDotsPerInch := XDpi;
Graphic.YDotsPerInch := YDpi;
Graphic.SaveToFile('c:\images\scan.bmp');
Graphic.SaveToStream(stream1);
imgFImageScrollBox.LoadFromStream(stream1,'bmp',0) ;
finally
Graphic.Free;
end;
end;

hosseinmehr
دوشنبه 08 تیر 1394, 18:35 عصر
سلام برادر عزيز جناب آقاي صلاحي،
ولي من كلي رو اين كامپوننت ImageEn كه خيلي هم قويه وقت گذاشتم و از خيلي ديگه از امكاناتش استفاده كردم.
اگه دوستاني كه كاركردن لطف كنن كمك كنن ممنون ميشم.

hadisalahi2
جمعه 12 تیر 1394, 12:32 عصر
در قوی بودن این imageEN شکی نیست
اما من فقط راهکار سریع رو خدمتت گفتم

hosseinmehr
شنبه 13 تیر 1394, 01:07 صبح
با تشکر از جناب صلاحی عزیز
خوشبختانه راه حلش را پیدا کردم و خدمت دوستان عزیز عرض میکنم:
http://www.imageen.com/help/ImageEn/TImageEnMIO.Acquire.html
در مجموع کامپوننت های imageen یه کامپوننت بنام TImageEnMView هست که برای اسکن چند صفحه ای استفاده میشه و به این صورت :

//SourceSelected is a variable with initial value of false
if not SourceSelected then
begin
//اگر یه اسکنر بیشتر نصب نیست از همین استفاده شود.
if imgEnV1.MIO.TwainParams.SourceCount = 1 then
begin
ImageEnMView1.MIO.TwainParams.SelectedSource := 0;
SourceSelected := True
end
else
begin
//نمایش کادر انتخاب اسکنر
if ImageEnMView1.MIO.SelectAcquireSource() then
SourceSelected := True;
end;
end;
if SourceSelected then
begin
//نمایش کادر اسکن، در صورت انتخاب چک باکس مورد نظر توسط کاربر
ImageEnMView1.MIO.AcquireParams.VisibleDialog := chbShowScanUI.Checked;
ImageEnMView1.MIO.Acquire
end;

ariobarzan
چهارشنبه 17 تیر 1394, 12:39 عصر
با سلام
روی خط
ImageEnMView1.MIO.AcquireParams.VisibleDialog := chbShowScanUI.Checked;
وروی AcquireParams خطا میگیره. چرا؟