的我已經讀了很多關於調整圖像大小和質量的減少對堆棧的職位,但其中的非已約降低質量以一定的物理磁盤空間C#StorageFile圖像尺寸調整到一定量的字節
我有一個代碼拍照:
private async void TakeAPhoto_Click(object sender, RoutedEventArgs e)
{
CameraCaptureUI captureUI = new CameraCaptureUI();
captureUI.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg;
StorageFile photo = await captureUI.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (photo != null)
{
}
}
現在我需要將數據發送到服務器,但在此之前,我需要保證照片不超過3 MB。
所以我這樣做:
BasicProperties pro = await photo.GetBasicPropertiesAsync();
if (pro.Size < 3072)
{
// SEND THE FILE TO SERVER
}
else
{
// DECREASE QUALITY BEFORE SENDING
}
所以現在的問題是關於else塊
有沒有更好的或者也許我錯過了一些內置的方法,以適應圖像到一定量兆字節通過降低質量?
因爲這樣做:
while (pro.Size <= 3072)
{
photo = // some logic to decrease quality on 10%
}
不真好看。
我不認爲這是一個好得多的方法。是的,您可以應用一些啓發式方法(比如,如果文件比您需要的大得多 - 將質量降低10%以上),但仍然會出現循環和多個質量降低(如果降低質量無助於縮小尺寸) 。 – Evk