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