THotPDF.OptimizeLoadedImagesByVisualCost Method
대상 로드 JPEG 및 JPEG 2000 이미지에 대해 경계 있는 품질 탐색을 수행하고, 품질과 절감 한도를 모두 만족하는 최저 비용 후보를 채택합니다
선언
function OptimizeLoadedImagesByVisualCost(
const Options: THPDFImageRecompressionCostOptions;
out AInfo: THPDFImageRecompressionCostInfo): Integer;
비용 모델
인코딩된 각 후보를 디코딩한 뒤, 정규화된 0~100 지각 오차 척도에서 표본화한 luma와 chroma 잔차로 디코딩된 소스와 비교합니다
MaximumPerceptualError를 넘거나 MinimumSavingsBytes에 미치지 못하는 후보는 채점 전에 거부됩니다
score = VisualErrorWeight * sqr(error / MaximumPerceptualError)
+ ByteCostWeight * (candidateBytes / sourceBytes)
가장 낮은 점수가 이기며, 점수가 같으면 인코딩 크기가 작은 순, 그다음은 품질이 높은 순으로 결정되므로 반복 실행해도 같은 출력이 나옵니다
THPDFImageRecompressionCostOptions
MinimumQuality, MaximumQuality, QualityStep이 경계 있는 품질 시험을 정의하며, step이 범위를 나누지 못해도 최대 품질은 항상 포함됩니다
SampleStride는 1~64 범위의 결정론적 픽셀 서브샘플링을 제어하고, 두 개의 음수가 아닌 가중치로 호출자가 시각 충실도와 작은 출력 크기 중 방향을 정할 수 있습니다
THPDFImageRecompressionCostOptions.Default는 품질 30~90을 10 step으로 탐색하고, 지각 오차를 3으로 제한하며, 1바이트 절감을 요구하고, 각 차원에서 네 번째 픽셀마다 표본화하며, 시각 오차와 바이트 비용을 같은 가중치로 둡니다
THPDFImageRecompressionCostInfo
결과에는 검사한 이미지 수와 대상 이미지 수, JPEG 및 JPEG 2000 재기록 횟수, 인코딩 시도 횟수, 시각 오차 및 바이트 비용 거부 횟수, 선택된 품질 총계, 허용된 최대 지각 오차, 바이트 총계, DeterministicSelection 상태가 담깁니다
안전성
이미지 마스크, colour-key 마스크, spot 색상, Lab 이미지, non-RGB ICCBased 소스는 그대로 유지되고, 변환 가능한 calibrated RGB 소스는 명시적인 calibrated 출력 색 공간을 유지합니다
취소 여부는 이미지마다, 인코딩 시도마다 확인하며, 수락된 후보 하나를 온전히 선택하기 전에는 소스 stream을 교체하지 않습니다