Hi,
ImageEn 13.0, Delphi 12.1 Update 1
I add a button "Test" with this code to your AllAcquire demo:
procedure TfrmMain.TestButtonClick(Sender: TObject);
var
nSelIdx :Integer;
nAngle :Double;
begin
ImageEnMView1.LockUpdate();
try
for var nCou := 0 to ImageEnMView1.MultiSelectedImagesCount-1 do begin
nSelIdx := ImageEnMView1.MultiSelectedImages[nCou];
ImageEnMView1.SelectedImage := nSelIdx;
nAngle := ImageEnMView1.Proc.SkewDetection();
ImageEnMView1.Proc.RotateAndCrop(nAngle, ierBilinear,
ImageEnMView1.IEBitmap.Height / ImageEnMView1.IEBitmap.Width,
iecaSkewedDocument);
end;
finally
ImageEnMView1.UnlockUpdate();
end;
end;
Setting properties:
MultiSelectionOptions := [iemoSelectOnMouseUp];
EnableMultiSelect := True;
I start the demo, scan a few pages. It is desirable to scan pages in a slightly crooked form.
Select several scanned pages and press the "Test" button.
If the program is built in 32-bit, all selected pages except the first one are not aligned.
If the program is built in 64-bit, an error occurs when aligning the second page (calling RotateAndCrop):
Project AllAcquire.exe raised exception class EAccessViolation with
message 'Access violation at address 000000000103E573. Read of address 0000000000000000'.
This is the call stack:
:000000000103E573 RC + $53
:000000000103E60A Bilinear + $8A
:000000000103F393 IEQRotateTo24 + $3B3
:000000000103E40F IEQRotateTo + $EF
:000000000103E2CC IEQRotate + $9C
:000000000118147F TIEBitmap.RotateEx + $1FF
:000000000101BA55 TImageEnProc.Rotate + $245
:000000000105AE20 TImageEnProc.RotateAndCrop + $170
EurekaLog gives this error:
Application made attempt to call method of already
deleted object: $000001AAC5254370 OBJECT [TIEBitmap] 456 bytes.