{ ==============================================================================
|
方法名稱:ImageReSize_FormID
|
引用相依:CheckSize, FileExists, FindPoint, ImageReSize_FormID, ImageResize, L
|
oadFileGetMD5, LoadFromFile, SaveToFile
|
方法描述:依據定位點縮放影像。查詢表單規格,載入影像(過濾補件模式),尋找十字線或
|
邊框定位點,執行縮放並紀錄 MD5 與日誌。
|
============================================================================== }
|
Procedure TCB_IMGPSScanX.ImageReSize_FormID(CaseID,FileName:String); //依十字定位點做縮放
|
var
|
FormID : String;
|
DH,DW : String;
|
NowW,NowH : Integer;
|
ANCHOR : String; //是否有十字線
|
SizeStr : String;
|
S : TStringlist;
|
v,v1:Integer;
|
IsRecordMD5:Boolean;
|
begin
|
IsRecordMD5:=False;
|
FormID := FileName2FormCode(FileName);
|
if FormID = '' then Exit;
|
|
IF FindSQLData(FORM_INF_List,'T1.FORM_HEIGHT,T1.FORM_WIDTH,T1.ANCHOR','T1.FORM_ID',FormID,0,FindResult) then
|
begin
|
DH := GetFindResult('T1.FORM_HEIGHT');
|
DW := GetFindResult('T1.FORM_WIDTH');
|
ANCHOR := UpperCase(GetFindResult('T1.ANCHOR'));
|
ANCHOR := Index2Anchor(ANCHOR);
|
Display1.Lines.Add(FormID+','+DH+','+DW);
|
//ShowMessage('AAAAAAAAA');
|
if ((ANCHOR = 'ANCHOR') or (ANCHOR = 'FRAME')) and (DH <> '') and (DW <> '') then //有十字定位點
|
begin
|
//ShowMessage('BBBBBBB');
|
ImageScrollBox1.LoadFromFile(ImageSavePath+CaseID+'\Upload\'+FileName,1);
|
|
if (FWH_category='N') and ISExistImg(ImageSavePath+CaseID+'\Upload\'+FileName) then
|
begin
|
Exit;//20171103 補件 原有的圖不作resize
|
end;
|
|
//FindPoint(ImageScrollBox1.Graphic,UpLPoint,UpRPoint,DownLPoint,NowW,NowH);
|
FindPoint(ISB_BW.Graphic,UpLPoint,UpRPoint,DownLPoint,NowW,NowH,ANCHOR);
|
|
SizeStr := CheckSize(ISB_BW,UpLPoint,UpRPoint,DownLPoint,DW,DH);
|
ImageResize(ImageScrollBox1.Graphic,ISB_BW.Graphic.Width,ISB_BW.Graphic.Height);
|
|
FindPoint(ISB_BW.Graphic,UpLPoint,UpRPoint,DownLPoint,NowW,NowH,ANCHOR);
|
v := 5;
|
v1 := length(SizeStr);
|
IF (SizeStr <> '') and (Copy(SizeStr,1,v) <> 'ERROR') then
|
begin
|
//ShowMessage('CCCCC');
|
if (ISExistImg(ImageSavePath+CaseID+'\Upload\'+FileName)) and (reSizeExistImgList.IndexOf(LoadFileGetMD5(ImageSavePath+CaseID+'\Upload\'+FileName))=-1) then
|
begin
|
IsRecordMD5:=True;
|
end;
|
ImageScrollBox1.SaveToFile(ImageSavePath+CaseID+'\Upload\'+FileName);
|
if IsRecordMD5 then
|
begin
|
reSizeExistImgList.add(LoadFileGetMD5(ImageSavePath+CaseID+'\Upload\'+FileName));
|
end;
|
//showmessage(ImageSavePath+CaseID+'\Upload\'+FileName);
|
S := TStringlist.Create; ///20110422拿掉 換成上傳才做
|
if FileExists(ImageSavePath+CaseID+'\Upload\ReSize.dat') then
|
S.LoadFromFile(ImageSavePath+CaseID+'\Upload\ReSize.dat');
|
//S.Add(FormCode2FormName(FormID)+' '+SizeStr);
|
S.Add(FileName+','+SizeStr+#8+DateTimetoStr(Now));
|
S.SaveToFile(ImageSavePath+CaseID+'\Upload\ReSize.dat');
|
S.Free;
|
end;
|
if (Copy(SizeStr,1,v) = 'ERROR') then //未找到三個定位點
|
begin
|
S := TStringlist.Create;
|
if FileExists(ImageSavePath+CaseID+'\Upload\AnchorError.dat') then
|
S.LoadFromFile(ImageSavePath+CaseID+'\Upload\AnchorError.dat');
|
S.Add(FileName+'-->'+Copy(SizeStr,V+1,V1-v));
|
S.SaveToFile(ImageSavePath+CaseID+'\Upload\AnchorError.dat');
|
S.Free;
|
end;
|
|
ImageScrollBox1.FileName := '';
|
end;
|
end;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:ImageReSize_tmp
|
引用相依:CheckSize, ImageReSize_tmp, ImageResize, LoadFromFile, SaveToFile
|
方法描述:針對暫存檔執行定位點縮放。簡化版 Resize 邏輯,若偵測到尺寸偏移則直接覆
|
蓋原始檔案,用於處理臨時影像。
|
============================================================================== }
|
Procedure TCB_IMGPSScanX.ImageReSize_tmp(FormID,FileName:String); //依十字定位點做縮放(暫存檔)
|
var
|
DH,DW : String;
|
ANCHOR : String; //是否有十字線
|
SizeStr : String;
|
S : TStringlist;
|
begin
|
IF FindSQLData(FORM_INF_List,'T1.FORM_HEIGHT,T1.FORM_WIDTH,T1.ANCHOR','T1.FORM_ID',FormID,0,FindResult) then
|
begin
|
DH := GetFindResult('T1.FORM_HEIGHT');
|
DW := GetFindResult('T1.FORM_WIDTH');
|
ANCHOR := UpperCase(GetFindResult('T1.ANCHOR'));
|
ANCHOR := Index2Anchor(ANCHOR);
|
if ((ANCHOR = 'ANCHOR') or (ANCHOR = 'FRAME')) and (DH <> '') and (DW <> '') then //有十字定位點
|
begin
|
ImageScrollBox1.LoadFromFile(FileName,1);
|
SizeStr := CheckSize(ImageScrollBox1,UpLPoint,UpRPoint,DownLPoint,DW,DH);
|
IF SizeStr <> '' then
|
begin
|
ImageScrollBox1.SaveToFile(FileName);
|
end;
|
ImageScrollBox1.FileName := '';
|
end;
|
end;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:CheckNeedCrop
|
引用相依:CheckNeedCrop, TDibGraphic
|
方法描述:判斷影像是否需執行 A3 切割。依據影像寬度(大於 4 倍 DPI)及條碼清單中有
|
效表單代碼的數量(需為 2 個)作為判定據。
|
============================================================================== }
|
Function TCB_IMGPSScanX.CheckNeedCrop(Graphic:TDibGraphic):Boolean; //是否是A3要切影像
|
Var
|
i,FormIDCount : Integer;
|
begin
|
Result := False;
|
FormIDCount := 0;
|
if (Graphic.Width > (4 * Graphic.XDotsPerInch)) {or (Graphic.Height > (15 * Graphic.YDotsPerInch))} then
|
//if (Graphic.Width > (6 * Graphic.XDotsPerInch)) then
|
begin
|
for I := 1 to MpsBarcodeinf.Count do
|
begin
|
if (Length(MpsBarcodeinf.Text[i])=FormIDLength) and FormIDExists(MpsBarcodeinf.Text[i],False,0) then
|
begin
|
inc(FormIDCount);
|
end;
|
end;
|
|
end;
|
|
//ShowMessage('FormIDCount='+IntToStr(FormIDCount)+#10#13+'MpsBarcodeinf.count='+IntToStr(MpsBarcodeinf.count));
|
if FormIDCount = 2 then
|
begin
|
Result := True;
|
end;
|
end;
|