2012-04-20 3 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 As String, 그리고 여전히 일어났습니다. 목록이 채워지지만 OriginalFilePath가 올바른 (모든 다른) 이미지를 나열하더라도 EncodedString의 모든 인스턴스는 위에 게시 한 값입니다 – Kevin

답변

0

User-Agent 헤더 문자열이 제거되어 문제가 해결되었습니다.

0

Base64로 문자열이 유효한 24x24 픽셀 완전 투명 PNG 파일입니다. Base64 코드가 작동하는 것처럼 보일 수 있지만 변환하려는 파일은 변환하려는 파일이 아닐 수 있습니다.

+0

전달되는 모든 단일 파일이 유효하며 올바른 파일입니다. – Kevin

+0

또한 _wc.DownLoadFile (_File, "mypath")을 사용하여 각 파일을 확인하고 중단 점을 작성하고 기록 된 파일을 검사했습니다. 각각의 작성된 이미지는 정확히 그들이 무엇을 해야하는지입니다. – Kevin

+0

죄송합니다. 그 답을 모르겠습니다. – Yogu