GitHub地址:https://github.com/qiangzi7723/img2Ascii
如果覺得不錯可以給個star或者提出你的建議
img2Ascii,基於JS的圖片轉ASCII示意圖。
效果
轉碼前圖片
轉碼后圖片
構建
npm install 或者 yarn install
之后通過
npm run dev
即可打開項目
使用
以下代碼在main.js
中
const Img2Ascii=require('./index');
const img=require('./assets/av.png');
new Img2Ascii(img,(nSrc,img)=>{
const nImg = new Image();
nImg.src = nSrc;
nImg.style.width = img.width + 'px';
nImg.style.height = img.height + 'px';
nImg.onload = () => {
document.body.appendChild(nImg);
document.getElementById('tip').style.display='none';
}
});
Img2Ascii方法需要傳入兩個參數,第一個參數是圖片路徑,第二個參數是圖片轉換完畢后的回調函數,需要自己在回調函數中注入新生成的圖片節點,否則看不到效果。
實現思路
把圖片在canvas
中繪制后,利用getImageData
接口獲取圖片的rgba
,計算rgba
值轉換為對應的ASCII
碼,在適當的位置進行換行,然后整體轉換便完成。
瓶頸
目前項目的瓶頸存在於html2canvas
這個插件,把圖片轉成ASCII碼在瀏覽器中輸出是十分快速的,但是后期將輸出的ASCII碼轉換成圖片時,使用了html2canvas
插件,這個插件在轉換圖片的過程中十分緩慢,導致最后的輸出緩慢。接下來會把html2canvas
這個插件換成使用別的插件實現,忘廣大網友提供一些轉圖片的插件。
除此之外我還寫有draggable
拖拽庫以及ant-template
模板引擎,如果覺得不錯可以給個star
。