의 일정 금액의 크기를 조정 이미 이미지 크기 조정 및 감소 품질에 대한 스택에 글을 많이 읽고,하지만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메가바이트 아님을 확인해야합니다.
그래서 나는이 작업을 수행 :
이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