2017-05-19 2 views
0

Filepicker 또는 모든 종류의 피커를 사용하지 않고 특정 폴더 및 특정 이름에 저장된 이미지 나 이미지의 경로를 가져 오려고합니다. C#을 사용하여 프로그래밍 방식으로이 작업을 수행해야합니다. 그 특정 이름으로 외부 URL에서 이미지를 저장하는 방법이 있고 그 이미지 나 경로를 가져와야합니다. "Windows Phone 8.1"에서windows phone에서 파일 피커를 사용하지 않고 이미지를 선택하십시오. 8.1

public async Task GetBCardImageFromWeb(string url) 
    { 
     StorageFolder picsFolder = KnownFolders.SavedPictures; 
     StorageFile file = await picsFolder.CreateFileAsync(
      "MyBusinessCardImageEmail.jpg", CreationCollisionOption.GenerateUniqueName); 

     HttpClient client = new HttpClient(); 
     string path = url; 
     byte[] responseBytes = await client.GetByteArrayAsync(path); 

     var stream = await file.OpenAsync(FileAccessMode.ReadWrite); 

     using (var outputStream = stream.GetOutputStreamAt(0)) 
     { 
      DataWriter writer = new DataWriter(outputStream); 
      writer.WriteBytes(responseBytes); 
      await writer.StoreAsync(); 
      await outputStream.FlushAsync(); 
     } 
    } 

    public async Task<StorageFile> FetchImageFileFromPhone() 
    { 
     string fileName = "MyBusinessCardImageEmail.jpg"; 
     StorageFolder myfolder = KnownFolders.PicturesLibrary; 
     StorageFile file = await myfolder.GetFileAsync(fileName); 
     //file = Windows.Storage.FileIO.ReadBufferAsync(file); 
     return file; 
     //using (Stream stream = (await file.OpenReadAsync()).AsStreamForRead()) 
     //using (BinaryReader reader = new BinaryReader(stream)) 
     //{ 
     // Windows.Storage.FileProperties.BasicProperties x = await file.GetBasicPropertiesAsync(); 
     // await stream.FlushAsync(); 
     // return stream; 
     //} 
    } 

답변

0

문제가 해결되었습니다. 실제로 나는 시내를 처분하지 않고 있었다.

using (var outputStream = stream.GetOutputStreamAt(0)) 
      { 
       DataWriter writer = new DataWriter(outputStream); 
       writer.WriteBytes(responseBytes); 
       await writer.StoreAsync(); 
       await outputStream.FlushAsync(); 
       outputStream.Dispose(); 
      } 
      //}); 
      await stream.FlushAsync(); 
      stream.Dispose(); 
관련 문제