次のコードを実行しようとすると:
byte[] arr= Convert.FromBase64String("1/50/Zoolz/Win-s9u0uco8ea0(11)/349.jpg")
次のエラーを受け取りました。
入力は有効な Base-64 文字列ではありません。これは、base 64 以外の文字、3 つ以上の埋め込み文字、または埋め込み文字の間に空白以外の文字が含まれているためです。
誰が解決できますか?
Convert.FromBase64String
base 64 でコード化されたものを含むファイルの名前ではなく、base 64 でコード化された文字列をパラメータとして期待します。
画像ファイルのコンテンツが base 64 でコーディングされている場合は、まずファイルを読み取ってから、次のようFromBase64String
にそのコンテンツを呼び出す必要があります。
string baseText = File.ReadAllText(<filename>);
byte[] imageBytes = Convert.FromBase64String(baseText);
base64string をメソッドに渡すのではなく、最初にイメージを base64string に変換してから、その文字列でメソッドを呼び出します。
画像を base64string に変換する
using (var fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
var buffer = new byte[fs.Length];
fs.Read(buffer, 0, (int)fs.Length);
string base64 = Convert.ToBase64String(buffer);
}
base64文字列を画像に変換する
byte[] imageBytes = Convert.FromBase64String(imgBase64String);
MemoryStream ms1 = new MemoryStream(imageBytes);
Image img = Image.FromStream(ms1);
Base 64 でコード化された文字列を使用していません。これは単なる通常の文字列です。テストを作成しようとしている場合は、次のコードを使用して文字列を base64 に変換できます。
string stringToBeEncoded = "some string";
byte[] byteArray = System.Text.ASCIIEncoding.ASCII.GetBytes(stringToBeEncoded);
string base64String = System.Convert.ToBase64String(byteArray);