У меня тут небольшая проблема. Я изменяю размер изображения, используя следующий фрагмент кода:
public static BitmapFrame FastResize(BitmapFrame image, int width, int height) {
var scaleX = width / image.Width * 96 / image.DpiX;
var scaleY = height / image.Height * 96 / image.DpiY;
var target = new TransformedBitmap(image, new ScaleTransform(scaleX, scaleY, 0, 0));
return BitmapFrame.Create(target);
}
Проблема в том, что я вычисляю значение scaleX
и scaleY
. Некоторые изображения имеют DPI, но некоторые из них имеют 0.00
, или я могу предположить, что DPI не установлен для этих изображений. И в результате у меня есть значение Infinity
для этих двух переменных scaleX
и scaleY
. Поскольку значение image.DpiX
и image.DpiY
равно 0.00
. Ну, это не исключение Attempt to divide by zero
.
Чтобы добиться высокого и ожидаемого качества после процесса масштабирования/изменения размера изображения, мне нужно вычислить scaleX
и scaleY
таким образом: width / image.Width * 96 / image.DpiX
. Однако, как я уже упоминал, некоторые изображения не имеют установленного DPI.
Итак, мой вопрос: что мне делать в этом случае, если изображение не имеет установленного DPI, чтобы предотвратить значение Infinity
для этих переменных? Есть ли значение DPI по умолчанию, которое мы можем использовать для изображений, если оно не установлено? Или может быть способ расчета PDI программно с использованием WPF/WIC (WPF и Windows Imaging Component), даже если он не установлен?