2013-03-31 53 views
0

我在醫學圖書館(5000 * 5000像素)有大的圖像。我只需要拍攝一部分圖像。假設它從x = 200 y = 200開始並且它的1000個像素的寬度和高度。我怎樣才能做到這一點 ?我沒有任何好的解決方案。如何從醫學圖書館窗口手機7裁剪圖像

唯一的解決辦法,我發現:

使用 photochoosertask .... 然後

var b = new WriteableBitmap(5000, 5000); 
b.LoadJpeg(e.ChosenPhoto); 
WriteableBitmap wb = b.Crop(200, 200, 1000, 1000); 
image1.Source = wb 

但結果是非常糟糕的質量,我得到了一些RAM問題也...

回答

0

這裏的問題是您正在創建大小爲1000x1000的WriteableBitmap。當您調用LoadJpeg時,它會將圖像加載到該分辨率,這會導致質量問題。當你收穫時,情況會變得更糟。

當您嘗試處理大圖片時,內存問題是很正常的。爲了避免這種情況,最好使用SetSource方法,該方法會自動將您的照片縮放到2000x2000像素以下。如果你想閱讀更多關於這個,你可以find details on my blog

儘管如此,使用裁剪方法仍是一種方法。採取的步驟包括:

  • 從流源創建的BitmapImage,然後從一個WriteableBitmap的它(或者,創建一個大小爲5000,5000的WriteableBitmap的這是你想要的,但會導致你的內存問題)
  • 調用裁剪方法,但縮放所有內容以匹配使用SetSource時獲得的分辨率 - 應該爲2000x2000或更小。
  • 將image1.Source設置爲新創建的WB。
+0

uups。我在寫代碼時犯了一個錯誤(現在是它的權利)。我嘗試過這種設置方法,但由於它在2000 * 2000下縮放了我的照片,因此它打破了圖像質量。如果我使用loadjpeg方法,我的照片是5000 * 5000,但圖像的質量仍然很差。 – user2229434

+0

5000x5000表示內存爲95MB。裁剪時,您創建一個新的WriteableBitmap,它也很大,並且會有很多內存問題。你確定你需要這個尺寸嗎? image1 Image元素的大小是多少?也許你應該分享一些截圖,不知道你的情況下質量不好(拉伸圖片,像素化圖片等) –