{ ============================================================================== 方法名稱: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;