From 0756bf12d10cf1b7f78c571de0a9ad69cbaeb7ca Mon Sep 17 00:00:00 2001
From: curtis <curtis@i-mps.com>
Date: 星期一, 30 三月 2026 14:24:17 +0800
Subject: [PATCH] fix: 更新內部引用方法參照
---
reassemble/img/transformer.pas | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 152 insertions(+), 0 deletions(-)
diff --git a/reassemble/img/transformer.pas b/reassemble/img/transformer.pas
new file mode 100644
index 0000000..354cb93
--- /dev/null
+++ b/reassemble/img/transformer.pas
@@ -0,0 +1,152 @@
+{ ==============================================================================
+ 方法名稱: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;
+
+
--
Gitblit v1.8.0