Cho hình chữ nhật S, với tỷ lệ khung hình sx/sy và hai hình chữ nhật khác A (với tỉ lệ co/ay) và B (với tỷ lệ cỡ ảnh bx/theo) Tôi tìm ra hình dạng A hoặc B nào có tỷ lệ khung hình gần nhất với S? Kích thước của hình dạng không quan trọng.Cách xác định tỷ lệ cỡ ảnh nào gần nhất là
Có phải chỉ là bất kỳ (sx/sy)/(ax/ay) và (sx/sy)/(bx/by) gần nhất với 1 không?
Những gì tôi thực sự cố gắng làm là tìm ra hình dạng trên trang PPTX sẽ phù hợp nhất với hình ảnh sẽ được thay đổi kích thước và sau đó cắt để vừa với hình dạng đó. Tôi đoán cách tiếp cận khác sẽ là tìm ra hình dạng nào dẫn đến ít pixel nhất bị mất, mặc dù trong mã của tôi, sẽ dễ dàng hơn nếu tôi có thể làm điều đó bằng cách so sánh tỷ lệ khung hình.
Cuối cùng tôi đã đi với các thuật toán dưới đây, thực hiện như sau (nhờ Matt bóng cho ý kiến phản hồi của mình):
ShapeInPPTXLocation closest;
double imageAR = a_imageDim.getWidth()/a_imageDim.getHeight();
double aspectRatioCandidateA = a_candidateA.getWidth()/a_candidateA.getHeight();
double aspectRatioCandidateB = a_candidateB.getWidth()/a_candidateB.getHeight();
double closenessScoreA=1-(imageAR/aspectRatioCandidateA);
double closenessScoreB=1-(imageAR/aspectRatioCandidateB);
if (Math.abs(closenessScoreA) <= Math.abs(closenessScoreB))
{
closest=a_candidateA;
}
else
{
closest=a_candidateB;
}
Tôi đã nghĩ về điều này ban đầu nhưng tôi nghĩ nó chỉ hoạt động nếu chúng ta giả sử tất cả các hình dạng có X> Y (hoặc ngược lại).Ví dụ: đối với hình ảnh dọc, tỉ lệ khung hình luôn là một phần nhỏ; cho cảnh quan, nó là một số nguyên. Hãy cho tôi biết nếu tôi sai về điều này mặc dù - cảm ơn –
Giả sử rằng 'target_ratio' là' 1', 'a_ratio' là' 1.1' và 'b_ratio' là' 0.5' (vì vậy câu trả lời đúng là 'a_ratio') . Sau đó, bạn có '| -0.1 | <| 0.5 | 'hoặc' 0.1 <0.5' để trường hợp 'if' là' true', vì vậy chúng ta nhận 'a_ratio' từ thuật toán giả mã. Vì vậy, điều này hoạt động tốt khi sử dụng kết hợp giữa phong cảnh và chân dung. –
Chỉ cần thực hiện điều này trong mã của tôi và nó hoạt động hoàn hảo - nhờ :-) –