cuốn sách gpt4 ai đã làm

android - CalculateInSampleSize, tại sao Math.round xử lý chiều cao (chiều cao/reqHeight) khi chiều rộng > chiều cao?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 08:04:29 29 4
mua khóa gpt4 Nike

Tôi đã xem "developer.android.com" để thu nhỏ tệp bitmap của mình nhưng tôi thấy có một điều tôi không hiểu. Vì vậy tôi đánh giá cao việc bạn giúp tôi một chút.

这是一个 đoạn tríchtừ nhà phát triển.android.com

int tĩnh công khai tínhInSampleSize(
Tùy chọn BitmapFactory.Options, int reqWidth, int reqHeight) {
// Chiều cao và chiều rộng thô của hình ảnh
chiều cao int cuối cùng = options.outHeight;
chiều rộng int cuối cùng = tùy chọn.outWidth;
int inSampleSize = 1;

if (chiều cao > reqHeight || chiều rộng > reqWidth) {
nếu (chiều rộng > chiều cao) {
inSampleSize = Math.round((float)height / (float)reqHeight);
} khác {
inSampleSize = Math.round((float)width / (float)reqWidth);
}
}
trả vềSampleSize;
}

Trong câu lệnh if, khi "if(width > Height)", tại sao chúng ta cần tính "(float)height/(float)reqHeight"?

Ví dụ: chiều rộng=600, chiều cao=800, reqWidth=100, reqHeight=100.

Trong trường hợp này, inSampleSize sẽ là 6 và kích thước được tính toán sẽ là chiều rộng=100 và chiều cao=133. Chiều cao vẫn cao hơn reqHeight..

Vì vậy, ai đó có thể giải thích điều này? Xin lỗi vì lời giải thích phức tạp nhưng tôi đã hy vọng ai đó có thể cho tôi một ý tưởng. :)

câu trả lời hay nhất

Tất cả những gì tôi có thể nói là logic của họ có vẻ sai :( Dù sao, phương pháp này khá đơn giản, vì vậy việc triển khai lại nó với các điều kiện phù hợp sẽ không phải là vấn đề lớn! Ý tôi là khi bạn nhìn vào giải mãSampledBitmapFromResource, nó chỉ muốn giảm Bitmap xuống vừa với giới hạn mong muốn, vì vậy đây chắc chắn là một lỗi.

EDIT:: Đối với tôi điều này có vẻ tệ hơn vì nó không hoạt động trong một số trường hợp. Giả sử bạn có chiều rộng = 200 và chiều cao = 600. Bạn đặt lề tối đa thành chiều rộng = 100 và chiều cao = 500. Chiều cao > chiều rộng của bạn, nhưng nếu bạn muốn cả hai đều vừa khít thì inSampleSize được trả về phải là 200/100 thay vì 600/500. Vì vậy, về cơ bản nếu bạn triển khai lại phương pháp này, tôi sẽ làm như sau:

int tĩnh công khai tínhInSampleSize(
Tùy chọn BitmapFactory.Options, int reqWidth, int reqHeight) {
// Chiều cao và chiều rộng thô của hình ảnh
chiều cao int cuối cùng = options.outHeight;
chiều rộng int cuối cùng = tùy chọn.outWidth;

int Stretch_width = Math.round((float)width / (float)reqWidth);
int Stretch_height = Math.round((float)height / (float)reqHeight);

nếu (stretch_width <= Stretch_height)
trả về Stretch_height;
khác
trả về Stretch_width;
}

Nhưng dường như mã của họ có quá nhiều sai sót đến nỗi tôi không thể tin rằng mình hiểu đúng ý nghĩa của nó!

Về android - CalculateInSampleSize, tại sao Math.round xử lý chiều cao (chiều cao/reqHeight) khi chiều rộng > chiều cao? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/13696166/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress