簡體   English   中英

確定上傳圖像的分辨率(DPI)

[英]Determining resolution (DPI) of an uploaded image

我有一個用於上傳圖片文件的組件。

但是,我還希望能夠檢查DPI設置,因為這些圖像最終將被打印並提交到紙上。

在ASP.net中,我通常可以執行以下操作:

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

但是,在Silverlight中,我無法訪問相同的庫來執行此操作(也就是說,這是我在Silverlight中的第一個步驟,因此,如果有辦法將這些dll導入,我將全力以赴,但我無法導入實用程序包裝器)。

我已經看到了有關JPEG編碼/解碼實用工具FJcore(imagetools也包裝了這個庫)的許多建議。 從理論上講,人們將JPEG流加載到解碼器中並獲取信息。

我已經嘗試將這種方法與FJcore結合使用,但是我從photoshop中保存的所有文件似乎都缺少指示文件星號的正確標頭,這會導致解碼器失敗。 我還使用他們的單元測試確認了此問題。

關於如何在Silverlight中從文件上傳中提取圖像分辨率的任何想法?

圖像的DPI並不總是存儲在圖像上。 這通常是在掃描儀(或照相機)捕獲期間另存為元數據的額外屬性。 您實際上可以看到,如果使用Bitmap在C#中加載JPEG並再次保存,DPI屬性將丟失並設置為默認值96。

因此,不幸的是,這並非始終可靠的選擇。 我認為沒有機會獲得所有圖像。 實際上,DPI與不是由掃描儀創建的圖片無關。

嘗試FJ核心組件以在Silverlight中查找圖像的DPI

FileStream stream = imageFiles.OpenRead();
DecodedJpeg jpegImage = new JpegDecoder(stream).Decode();
int imageDpi = jpegImage.Image.DensityX;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM