2012-04-20 7 views
0

私は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 =

+0

注意すべき点:CSSで冗長性を持たせることができるため、変換された画像の「キャッシュリスト」を作成し、可能であればラウンドトリップを保存します。また、 '.StartsWith(" https ")'を使うか、 'Uri'オブジェクトを使って' WebClient'に渡す前に有効なURLかどうかを調べる方がいいでしょう。 –

+0

今、 "キャッシュリスト"。まだ同じ問題です。私はList(ImageEncodingTypingの)を行っています。そのプロパティはOriginalFilePathをString、EncodedStringをStringにしており、それはまだ起こっています。リストにはデータが取り込まれていますが、EncodedStringのすべてのインスタンスは、OriginalFilePathが正しい(すべての異なる)画像をリストしていても上記の値です。 – Kevin

答えて

0

User-Agentヘッダー文字列を削除しましたが、問題は解決しませんでした。

0

base64文字列が有効な24×24ピクセル、完全に透明なPNGファイルです。あなたのbase64コードはうまくいくようですが、あなたが変換したファイルはおそらくあなたが変換したいものではありません。

+0

これに渡されるすべての単一のファイルは有効で、正しいファイルです。 – Kevin

+0

また、_wc.DownLoadFile(_File、 "mypath")によって各ファイルを検証し、ブレークポイントを設定し、書き込まれるファイルをチェックしました。それぞれの書かれたイメージは、まさに彼らが想像するものです。 – Kevin

+0

申し訳ありませんが、私は答えを知らない。 – Yogu

関連する問題