1. 程式人生 > >canvg處理svg轉png

canvg處理svg轉png

來源:https://github.com/canvg/canvg

Include the following files in your page:

<script type="text/javascript" src="http://canvg.github.io/canvg/rgbcolor.js"></script> 
<script type="text/javascript" src="http://canvg.github.io/canvg/StackBlur.js"></script>
<script type="text/javascript" src
="http://canvg.github.io/canvg/canvg.js"></script>

Put a canvas on your page

<canvas id="canvas" width="1000px" height="600px"></canvas> 

Example canvg calls:

<script type="text/javascript">
window.onload = function() {
  //load '../path/to/your.svg' in the canvas with id = 'canvas'
canvg('canvas', '../path/to/your.svg') //load a svg snippet in the canvas with id = 'drawingArea' canvg(document.getElementById('drawingArea'), '<svg>...</svg>') //ignore mouse events and animation canvg('canvas', 'file.svg', { ignoreMouse: true, ignoreAnimation: true }) } </script
>

The third parameter is options:

  • log: true => console.log information
  • ignoreMouse: true => ignore mouse events
  • ignoreAnimation: true => ignore animations
  • ignoreDimensions: true => does not try to resize canvas
  • ignoreClear: true => does not clear canvas
  • offsetX: int => draws at a x offset
  • offsetY: int => draws at a y offset
  • scaleWidth: int => scales horizontally to width
  • scaleHeight: int => scales vertically to height
  • renderCallback: function => will call the function after the first render is completed
  • forceRedraw: function => will call the function on every frame, if it returns true, will redraw
  • useCORS: true => will attempt to use CORS on images to not taint canvas

You can call canvg without parameters to replace all svg images on a page. See the example.

There is also a built in extension method to the canvas context to draw svgs similar to the way drawImage works:

var c = document.getElementById('canvas');
var ctx = c.getContext('2d');
ctx.drawSvg(SVG_XML_OR_PATH_TO_SVG, dx, dy, dw, dh);
自己將canvans轉svg的兩種實現方式:
//直接svgBase64轉Png
/* function getBase64PNG(svgStr,themeSize) {
  var image = new Image();
  image.src = svgStr;
  
      var canvas = document.createElement("canvas");
      canvas.width = 300;
      canvas.height = 300;
      var ctx = canvas.getContext("2d");
      if(themeSize==3){
        ctx.drawImage(image, 0, 0);
      }else if(themeSize==2){
      ctx.drawImage(image, 50, 50);
      }else if(themeSize==1){
        ctx.drawImage(image, 100, 100);
      }
      var dataURL = canvas.toDataURL("image/png");
      return dataURL
} */
/**
*直接svg轉Png的pngBase64
*/
function getBase64PNG(svgStr,themeSize) {
      var canvas = document.createElement("canvas");
      canvas.width = 300;
      canvas.height = 300;
      var ctx = canvas.getContext("2d");
      if(themeSize==3){
        ctx.drawSvg(svgStr, 0, 0, 300, 300);
      }else if(themeSize==2){
      ctx.drawSvg(svgStr, 50, 50, 200, 200);
      }else if(themeSize==1){
        ctx.drawSvg(svgStr, 100, 100, 100, 100);
      }
      var dataURL = canvas.toDataURL("image/png");
      return dataURL
}
<script type="text/javascript">
var url="https://www.czxiu.com/assets/z/2017jiehunzheng/15/2f43b42fd833d1e77420a8dae7419000.gif";
$(document).ready(function() {
       initCavans(url);
    });
//初始化canvans
var cavans;
function initCavans(pngPath){
var image = new Image();
  image.src = pngPath;
image.onload=function(){
cavans = new fabric.Canvas('cer');
cavans.width=image.width;
cavans.height=image.height;
alert(image.width);
alert(image.height);
}

}
</script>

相關推薦

canvg處理svgpng

來源:https://github.com/canvg/canvg Include the following files in your page: <script type="text/javascript" src="http://canvg.github

Dicompng,jpg等,可處理壓縮影象

如下:     file傳入檔案全路徑     注意:這個處理不了壓縮圖(維度較高的,如果需要通用化的請閱覽到最後!!!!)     10.24這個引數:轉 1024*1024的圖,也可以自定義 import

java後臺svgpng

1.替換img地址 /** * 替換img地址 * @param str -- 前臺svg字串 * @return */ private String transferImgPath(HttpServletRequest request,Strin

svgpng並下載

要實現點選一個按鈕,將介面上相應的svg轉成png圖片並下載。 html程式碼如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

Java圖片處理:ico格式 PNG/JPG等格式

一. 什麼是ico圖示? ico是一種圖示格式,大量應用於網站,各個軟體的logo或圖示展示。 我們在進入某個網站或網頁,它們上方標題左側各自都帶有logo圖示。 這就是favicon.ico圖示,它可以讓瀏覽器的收藏夾中除顯示相應的標題外,還可以用圖示的方式區別不同的網站。 二. ico圖示的特點 一張ic

js href和點擊事件處理

js href和點擊事件處理跳轉<a class="yykf11" href="{:U(‘House/yuyue‘,array(‘esfid‘=>$house[‘esfid‘]))}" datatitle="預約看房">預約看房</a>$().((e){ userte

php(thinkphp)在linux系統下pdfpng圖片【

dirname solution ima .tar.gz center thinkphp loaded cep .net PHP)中使用imagick實現把PDF轉成圖片 操作之前,先在linux服務器安裝 ghostscript 650 2017-06-17 13:31

MySQL:日期函數、時間函數處理

減少 expr lec datetime style pan 獲取 相減 sel date_add() 增加MYSQL 獲取當前時間加上一個月 update user set leverstart=now(),leverover=date_add(NOW(), int

SQL SERVER 日誌已滿的處理方法 ()

ive rec 找到 dbr 自動增長 日誌文件 運行 執行 資料 事務日誌文件Transaction Log File是用來記錄數據庫更新情況的文件,擴展名為ldf。在 SQL Server 7.0 和 SQL Server 2000 中,如果設置了自動增長功能,事務日誌

錯誤處理~跳頁面

ace 是否 tom spa env 時間 錯誤 data system 我們經常遇到很多網站在出錯時不報黃屏,而是跳轉到了一個錯誤頁面,那麽這個效果如何實現的呢?請看下面→_→ 第一種實現: 1.首先在Global裏面將FilterConfig轉

PHP大數據處理

php 問題 網站 href 集群 對象 web服務器 所有 還需要 1:硬件方面 普通的一個p4的服務器每天最多能支持大約10萬左右的IP,如果訪問量超過10W那麽需要專用的服務器才能解決,如果硬件不給力 軟件怎麽優化都是於事無補的。主要影響服務器的速度 有:網絡-硬

ajax下post提交方式下載文件的處理

brush conf xtend targe append move eth val 文件 ajax是不能直接下載文件的,所以一般都是通過一個超鏈接的形式去下載一個文件 但是當牽扯到需要發送很多數據到服務器上再下載的時候超鏈接的形式就有些不好看了, /*=========

htmlpng

ddl close 彈窗 fixed image gin draw rgb pad /*海報彈窗2018-3-14*/.diglogimg{position: fixed;top:0;left:0;z-index: 99;width: 100%;height: 100%;b

實現htmlpng

rgb 拷貝 callback 缺失 另存為 輸出 play clear com 公司要求將一些重要數據全部以圖片的形式放在官網上,防止網絡爬蟲。 之前都是UI作圖,人工上傳,為了解放生產力,於是我們程序處理。 步驟: 1、html得到與原圖一致的圖片(交給前端處理)

idea 中 沒有svn選項處理辦法[自網絡]

第一步 ~~ setting 選擇 ges 如果 安裝svn water src idea 中 沒有svn選項處理辦法[轉自網絡] 修改下idea內存卡了一下突然subversion沒了呵呵噠,一般都是插件形式存在的,去插件裏找下問題解決。 https://blog.c

Github網站css加載不出來的處理方法(,親測有效)

github 沒有 tro 谷歌 use window mil end spa 轉載鏈接:https://blog.csdn.net/qq_36589706/article/details/80573008因為工作需求,自己會經常使用到github,但是突然有一天打開git

C#之使用StringHelper來處理漢字拼音

ase blog true 符號 arr mes rep mode dede StringHelper字符串處理幫助 現在已經實現的功能有: 1.用給定的字符填充源字符串的左邊以達到指定的長度 2.用給定的字符填充源字符串的右邊以達到指定的長度 3.轉半角的函數(DBC c

死鎖處理

若是 狀態 net from transfer csdn tails 最好 出現 轉自:lemonGuo 死鎖出現的場景 根據以上分析總結一下最壞的情況: synchronized(from):別的線程在等待from對象; synchronized(to):別的

selenium之 時間日期控件的處理

ive input php same inpu find ttr gin uil 我們不去搞時間日期空間,我們把它當成一個普通的input框處理就好了! 但是,很多此類型input框都是禁止手動輸入的,怎麽辦? 很簡單,用js把禁止輸入的readonly屬性幹掉就好了。 來

selenium之 時間日期控制元件的處理

我們不去搞時間日期空間,我們把它當成一個普通的input框處理就好了! 但是,很多此型別input框都是禁止手動輸入的,怎麼辦? 很簡單,用js把禁止輸入的readonly屬性幹掉就好了。 來吧,看一下示例: 示例網址:http://www.sucaijiayuan.com/api/demo.php?