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