![](/img/trans.png)
[英]How to convert a base64 dataUri to Uint8ClampedArray without using HTML5 Canvas?
[英]Convert an image to base64 without using HTML5 Canvas
首先,有一點背景:
對於此序言的冗長性,我提前表示歉意。 但是,它可能有助於提供一種並非針對問題性質的替代解決方案。
我有一個使用嵌入式WinForm UserControls的ASP.NET MVC應用程序。 這些控件通過Microsoft.Ink
庫為TabletPC提供“墨水覆蓋”支持。 由於IE8企業標准,它們是不幸的必需品。 否則,HTML5 Canvas將是解決方案。
無論如何,圖像URL通過<PARAM>
傳遞到InkPicture
控件。
<object VIEWASEXT="true" classid="MyInkControl.dll#MyInkControl.MyInkControl"
id="myImage" name="myImage" runat="server">
<PARAM name="ImageUrl" value="http://some-website/Content/images/myImage.png" />
</object>
UserControl
的相應屬性采用該URL,調用執行HttpWebRequest
的方法,並將返回的圖像放置在InkPicture
。
public Image DownloadImage(string url)
{
Image _tmpImage = null;
try
{
// Open a connection
HttpWebRequest _HttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
_HttpWebRequest.AllowWriteStreamBuffering = true;
// use the default credentials
_HttpWebRequest.Credentials = CredentialCache.DefaultCredentials;
// Request response:
System.Net.WebResponse _WebResponse = _HttpWebRequest.GetResponse();
// Open data stream:
System.IO.Stream _WebStream = _WebResponse.GetResponseStream();
// convert webstream to image
_tmpImage = Image.FromStream(_WebStream);
// Cleanup
_WebResponse.Close();
}
catch (Exception ex)
{
// Error
throw ex;
}
return _tmpImage;
}
問題
這行得通,但是在此過程中有很多開銷,這極大地延遲了我的網頁的加載(15張圖像耗時15秒……不理想)。 正在做Image img = new Bitmap(url);
由於FileIO權限問題(無論是否完全信任,我都無法成功消除該問題),因此UserControl
則無法在這種情況下使用。
初始解決方案
即使使用canvas
不是當前的選擇,我還是決定使用它來測試解決方案。 我將在javascript中加載每個圖像,然后使用canvas
和toDataUrl()
獲取base64數據。 然后,我沒有將URL傳遞給UserControl
並讓它完成所有工作,而是將base64數據作為<PARAM>
傳遞。 然后,它將數據快速轉換回圖像。
15張圖像的15秒現在不到3秒。 因此,我開始尋找在IE7 / 8中工作的image-> base64解決方案。
以下是一些其他要求/限制:
希望我提供了足夠的信息,也感謝您能提供的任何指導。
謝謝。
您可以使用任何FlashCanvas,fxCanvas或excanvas庫,這些庫在舊的Internet Explorer版本中使用Flash或VML模擬畫布。 我相信所有這些都提供了Canvas API中的toDataURL
方法,使您能夠獲取圖像的編碼表示形式。
經過廣泛的挖掘(我使用的是相同的修補程序),我相信這是唯一的解決方案,只需編寫可將圖像發送到的PHP腳本即可。 當然,問題在於,除非滿足以下三個條件之一,否則無法將圖像發送到PHP腳本:
Uint8Array
) sendAsBinary
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.