2016-11-14 58 views
0

我嵌入base64String到TinyMCE的顯示圖像:嵌入式base64圖像的字符串是否適合大圖像?

<img src="blob:https://path/871bf236-3bae-472c-9f02-0bd3be19a435" alt="Desert.jpg" width="300" height="75" /> 

它適用於小圖像,但是當涉及到大的圖像它不工作,我猜測其因爲含base64String大型的網址圖片達到了URL瀏覽器長度的限制,我相信這是2000個字符左右。想看看是否有辦法縮短我的base64String?

'File path of the attachment 
DIM filePath = C:\path\solutions\Attachments\1\1726014c-7a2d-41b8-a79e-2acec1e8c7e0 

'Converted base64String path 
DIM base64URLPath = ToBase64String(ConvertToUrl(filePath)).toString 

'Converts the path to a base64String 
Public Function ToBase64String(filePath As String) As String 
     Dim aImage = New Bitmap(filePath) 
     Using stream = New IO.MemoryStream 
      Using img As Image = Image.FromFile(filePath) 
       If img.RawFormat.Equals(Imaging.ImageFormat.Jpeg) Then 
        aImage.Save(stream, Imaging.ImageFormat.Jpeg) 
       ElseIf img.RawFormat.Equals(Imaging.ImageFormat.Png) Then 
        aImage.Save(stream, Imaging.ImageFormat.Png) 
       ElseIf img.RawFormat.Equals(Imaging.ImageFormat.Icon) Then 
        aImage.Save(stream, Imaging.ImageFormat.Icon) 
       End If 
      End Using 
      Return Convert.ToBase64String(stream.ToArray) 
     End Using 
    End Function 

    'Gets the full file path 
    Public Function ConvertToUrl(filePath As String) As String 
     Dim uri = New Uri(filePath).LocalPath 
     Dim converted = uri 
     Return converted.ToString() 
    End Function 

回答

0

基於這篇文章,我解決了問題:Resize and Compress image to byte array without saving the new image。 ToBase64String是唯一改變的功能,現在它看起來像:

'Converts the path to a base64String 
Public Function ToBase64String(filePath As String) As String 
     Dim aImage = New Bitmap(filePath) 
     Dim aspectRatio As Double = aImage.Height/aImage.Width 
     Dim imgThumb = New Bitmap(aImage, 200, CInt(Math.Round(200 * aspectRatio))) 
     Using stream = New IO.MemoryStream 
      Using img As Image = Image.FromFile(filePath) 
       If img.RawFormat.Equals(Imaging.ImageFormat.Jpeg) Then 
        imgThumb.Save(stream, Imaging.ImageFormat.Jpeg) 
       ElseIf img.RawFormat.Equals(Imaging.ImageFormat.Png) Then 
        imgThumb.Save(stream, Imaging.ImageFormat.Png) 
       ElseIf img.RawFormat.Equals(Imaging.ImageFormat.Icon) Then 
        imgThumb.Save(stream, Imaging.ImageFormat.Icon) 
       End If 
      End Using 
      Return Convert.ToBase64String(stream.ToArray) 
     End Using 
    End Function