私はCSSファイルを解析するためのプロジェクトを少し作成しており、base64はすべての背景画像をエンコードしています。Base64 CSSで画像を符号化する
私はCSSを正しく解析できますが、イメージファイルをbase64Encoded文字列に変換しようとするたびに、返される文字列は常に同じです。
私は間違っていますか?
ここにエンコーダがあります。すべての画像パスがメソッドに正しく渡っていると仮定してください。この例では、すべてのイメージが完全修飾URLであるため、メソッドの最初のセクションが変換を実行しています。このことから返さ
Public Sub EncodeImage(ByVal _File As String)
If _File.StartsWith("http") OrElse _File.StartsWith("https") Then
Using _wc As New WebClient()
Common.SetAllowUnsafeHeaderParsing20()
_wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13")
_wc.DownloadFile(_File, "c:\temp.png")
Dim _d As Byte() = _wc.DownloadData(_File)
ImageStrings.Add(New ImageTyping() With {
.SourceFile = _File,
.Base64String = Convert.ToBase64String(_d)
})
_d = Nothing
End Using
Else
Using _fs As New FileStream(_File, IO.FileMode.Open)
Using _br As New BinaryReader(_fs)
Dim _i As Byte() = _br.ReadBytes(_fs.Length)
ImageStrings.Add(New ImageTyping() With {
.SourceFile = _File,
.Base64String = Convert.ToBase64String(_i)
})
_i = Nothing
_br.Close()
End Using
_fs.Close()
End Using
End If
End Sub
それぞれ、すべての文字列がある:あなたが投稿iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAAGXcA1uAAAAKUlEQVRIx2P4 // +/DwwzUJUzoiRGNYxqGNUwGDSMWjBqwagFoxbQAAMAfS9kqktT8qQAAAAASUVORK5CYII =
注意すべき点:CSSで冗長性を持たせることができるため、変換された画像の「キャッシュリスト」を作成し、可能であればラウンドトリップを保存します。また、 '.StartsWith(" https ")'を使うか、 'Uri'オブジェクトを使って' WebClient'に渡す前に有効なURLかどうかを調べる方がいいでしょう。 –
今、 "キャッシュリスト"。まだ同じ問題です。私はList(ImageEncodingTypingの)を行っています。そのプロパティはOriginalFilePathをString、EncodedStringをStringにしており、それはまだ起こっています。リストにはデータが取り込まれていますが、EncodedStringのすべてのインスタンスは、OriginalFilePathが正しい(すべての異なる)画像をリストしていても上記の値です。 – Kevin