2017-12-08 40 views
0

Documentsbyte arrayに変換する際に問題があります。今のところ私はそれにコードを持っていません。私は正しい解決策を見つけるのに苦労しています。私はImageからbyte arrayへの変換のヘルパーしか持っていません。ASP.NET MVCのドキュメント(docs、pdf)をバイト配列に変換

現在バイトに画像を変換のコードとその逆

public static Image ConvertBase64ToImage(string base64String) 
{ 
    try 
    { 
     // Convert Base64 String to byte[] 
     string res = base64String.Substring(base64String.IndexOf(',') + 1); 
     byte[] imageBytes = Convert.FromBase64String(res); 
     MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length); 

     // Convert byte[] to Image 
     ms.Write(imageBytes, 0, imageBytes.Length); 
     Image image = Image.FromStream(ms, true); 
     return image; 
    } 
    catch 
    { 
     return null; 
    } 
} 

public static string ConvertImageTo64BaseString(Image image) 
{ 
    try 
    { 
     using (MemoryStream m = new MemoryStream()) 
     { 
      image.Save(m, image.RawFormat); 
      byte[] imageBytes = m.ToArray(); 

      // Convert byte[] to Base64 String 
      string base64String = Convert.ToBase64String(imageBytes); 
      return base64String; 
     } 
    } 
    catch 
    { 
     return ""; 
    } 
} 

、変換

Image img = Image.FromStream(file.InputStream, true, true); 
Session["userimage"] = "data:image/png;base64," + cHelper.ConvertImageTo64BaseString(img); 
+0

メモリを使用すると、あなたがそうでなければ、読む前にゼロにコード内の位置を設定する必要があり、データをストリームを記入した後、あなたはどのようなデータを得ることはありませんストリーム。 – jdweng

+0

@jdwengその例を挙げることはできますか? – FrostyPinky

+0

ms.Write(imageBytes、0、imageBytes.Length); ms.Position = 0; イメージイメージ= Image.FromStream(ms、true); – jdweng

答えて

0

C#と.NETは、既に任意のファイルのコンテンツ(PDF /エクセル/画像を読み取るサポート.. 。)をバイト配列に変換します。

この例を見て:var byteArrayData = File.ReadAllBytes("C:\\file\\myfile.pdf");

か、また、あなたのファイルのすべてのバイトの内容を読み取るためのFileStreamを使用することができます。

B

  var buffer = new byte[16 * 1024]; 
      using (var stream = new FileStream("C:\\file\\myfile.pdf", FileMode.Open)) 
      { 
       using (var memoryStream = new MemoryStream()) 
       { 
        int read; 
        while ((read = stream.Read(buffer, 0, buffer.Length)) > 0) 
        { 
         memoryStream.Write(buffer, 0, read); 
        } 
        return memoryStream.ToArray(); 
       } 
      } 
+1

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)は本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 – Isma

関連する問題