なぜ私がやろうとしていることをしなければならないのかを説明しようとすると、時間がかかりますが、基本的には次のとおりです。ユーザーが Jpeg ファイルを選択するための FileUpload コントロールがあり、アップロードを行い、その後、そのファイルをバイトに変換し、それをイメージ コントロールのソースとして使用します。
私のコードはこれです:
string fileName = Server.MapPath("~/TempImages") + @"\foto.jpg";
fileUpload1.SaveAs(fileName);
System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
System.IO.BinaryReader binaryReader = new System.IO.BinaryReader(fs);
long byteLength = new System.IO.FileInfo(fileName).Length;
byte[] buffer = binaryReader.ReadBytes((Int32)byteLength);
fs.Close();
fs.Dispose();
string valor = System.Text.Encoding.UTF8.GetString(buffer);
img.ImageUrl = "data:image/jpg;base64," + valor;
バイト配列は問題ないように見えますが、それを文字列に変換すると、認識されない文字でいっぱいです。同じことを行う別のページがありますが、ファイルからバイトを取得する代わりに、MySql データベースから取得し、同じものを使用しますSystem.Text.Encoding.UTF8.GetString
問題なく動作します。
更新 尋ねられたように、これは MySql データベースから取得するときに使用するコードです。
DataView dv = (DataView)SqlDataSource3.Select(DataSourceSelectArguments.Empty);
byte[] buffer = (byte[])dv.Table.Rows[0]["BIN_FOTO"];
string valor = System.Text.Encoding.UTF8.GetString(buffer);
img.ImageUrl = "data:image/jpg;base64," + valor;
この SqlDataSource3 の選択は単純Select BIN_FOTO from temp_image
です。この値を Web カメラ キャプチャ WPF プログラムからデータベースに保存します。Web カメラがキャプチャした画像を変換するために使用するコードは次のとおりです。
private string ImageToBase64String(System.Drawing.Image imageData, ImageFormat format)
{
string base64;
MemoryStream memory = new MemoryStream();
imageData.Save(memory, format);
base64 = System.Convert.ToBase64String(memory.ToArray());
memory.Close();
memory.Dispose();
return base64;
}
base64
次に、変数をデータベースに保存します。
これで私の問題が明確になることを願っています