Определение разрешения (DPI) загруженного изображения - PullRequest
0 голосов
/ 20 октября 2010

У меня есть компонент для загрузки файла изображения.

Однако я также хочу иметь возможность проверить настройки DPI, поскольку в конечном итоге эти изображения будут напечатаны и представлены на бумаге.

В ASP.net я обычно могу сделать что-то вроде этого:

using (var rawBitmap = new Bitmap(postedFile.InputStream)){
    var dpi = (decimal)rawBitmap.VerticalResolution/bitmap.Height;    
    // do other stuff.
}

Однако в Silverlight у меня нет доступа к тем же библиотекам, чтобы сделать это (тем не менее, это мой первый удар в Silverlight, поэтому, если есть способ получить эти библиотеки, я все для этого, но я не смог импортировать свою служебную оболочку).

Я видел много рекомендаций для FJcore (imagetools также оборачивает эту библиотеку), утилиты кодирования / декодирования JPEG. Теоретически, каждый загружает поток JPEG в декодер и получает информацию.

Я пытался использовать подход с FJcore, но во всех файлах, которые я сохраняю из фотошопа, похоже, отсутствует правильный заголовок, который указывает на звездочку файла, что приводит к сбою декодера. Я также подтвердил эту проблему с помощью их модульных тестов.

Есть какие-нибудь идеи о том, как извлечь разрешение изображения из файла, загруженного в silverlight?

Ответы [ 2 ]

3 голосов
/ 20 октября 2010

DPI изображения не всегда сохраняется на изображении.Обычно это дополнительное свойство, сохраняемое как метаданные во время захвата сканером (или камерой).На самом деле вы можете видеть, что если вы загружаете JPEG в C # с помощью Bitmap и сохраняете его снова, свойство DPI теряется и устанавливается по умолчанию 96.

Так что, к сожалению, этот вариант не всегда надежен.Я не думаю, что есть шанс получить его для всех изображений.DPI фактически не имеет значения для изображений, которые не создаются сканерами.

0 голосов
/ 29 апреля 2013

Попробуйте сборку ядра FJ, чтобы найти DPI изображения в silverlight

FileStream stream = imageFiles.OpenRead();
DecodedJpeg jpegImage = new JpegDecoder(stream).Decode();
int imageDpi = jpegImage.Image.DensityX;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...