2013-04-02 41 views
1

我正在使用KineticJS創建一個Web應用程序,它是一個使用html5,css和javascript的獨立應用程序。KineticJS JavaScript另存爲FileSystem選項

我有以下一段代碼將當前畫布轉換爲imageURI。

function save() 
{ 
    stage.toDataURL({ 
     callback: function(imageURL) { 
      window.open(imageURL); 
     }, 
     mimeType: 'image/png', 
     quality: 1, 
     height: 480, 
     width: 640 

    }); 
} 

save()是使用按鈕的onclick屬性觸發的。

我必須解決兩個問題: -

  1. 我希望能夠打開「另存爲」對話框中,當我點擊這個按鈕保存。
  2. 重命名文件,而不是「download.png」以當前日期時間作爲文件名。例如,「020420130306PM.png」(日期02/04/2013時間0306)
  3. 我的舞臺大小爲958 X 598,我想將該文件另存爲640 X 480.只有toDataURL函數中的高度和寬度屬性裁剪頂部640×480像素的畫布。如何將整個舞臺(958 X 598)壓縮到(640 X 480)並保存。

我現在的解決方案是一個在KineticJS教程說明這是點擊保存按鈕,新的頁​​面打開了畫布圖像,右鍵單擊圖像,保存爲圖像,從download.png到020420130306PM重命名文件。 PNG並點擊保存。

我解決了第三部分使用setScale方法,它工作得很好。

回答

1

我解決了重命名該文件的第二部分,但是,我僅限於Chrome瀏覽器,並且無法將其保存在默認下載文件夾以外的任何位置。

<a>標籤中存在download屬性。如果download = "myfilename.png"那麼該文件將被下載爲myfilename.png

首先,要強制瀏覽器下載文件,您應該修改imageURI。

var newImageURL = imageURL.replace("data:image/png;base64","data:image/octet-stream;base64");

現在,添加和修改屬性只是使用jQuery attr()功能與click()一起。對於例如,

$('#saveAnchor').attr('download',filename); 
$('#saveAnchor').attr('href',newImageURL); 

現在觸發使用$('#saveAnchor')[0].click();

所以基本上當save()被稱爲錨鏈接上點擊假貨,以上所有發生在回調函數。

但我仍然想知道是否有任何可能的方法可以使用「另存爲」保存圖像而不使用PHP或AJAX。

相關問題