欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js+canvas實(shí)現(xiàn)圖片格式webp/png/jpeg在線轉(zhuǎn)換

 更新時(shí)間:2020年08月22日 22:45:07   投稿:mdxy-dxy  
這篇文章主要介紹了js+canvas實(shí)現(xiàn)圖片格式webp/png/jpeg在線轉(zhuǎn)換,需要的朋友可以參考下

功能需求:
我們?cè)诰W(wǎng)頁(yè)中上傳一張圖片,選擇不同的格式,將該圖片轉(zhuǎn)換為對(duì)應(yīng)的格式。

實(shí)現(xiàn)思路:
實(shí)現(xiàn)這樣的功能,使用后端語言【php,java等】可以很容易的完成。但是如果只在前端如何完成呢?

1、通過input上傳圖片,使用FileReader將文件讀取到內(nèi)存中。

2、將圖片轉(zhuǎn)換為canvas,canvas.toDataURL()方法設(shè)置為我們需要的格式,如:"image/webp","image/jpeg","image/png"。

3、最后將canvas轉(zhuǎn)換為圖片,顯示在網(wǎng)頁(yè)中。點(diǎn)擊右鍵保存,就得到了不同格式的圖片了。

toDataURL說明:
方法返回一個(gè)包含圖片展示的 data URI ??梢允褂?type 參數(shù)其類型,默認(rèn)為 PNG 格式。圖片的分辨率為96dpi。

語法:

canvas.toDataURL(type, encoderOptions);

type【可選】 圖片格式,默認(rèn)為 image/png,可選格式:"image/webp","image/jpeg","image/png"。

encoderOptions【可選】在指定圖片格式為 image/jpeg 或 image/webp的情況下,可以從 0 到 1 的區(qū)間內(nèi)選擇圖片的質(zhì)量。如果超出取值范圍,將會(huì)使用默認(rèn)值 0.92。其他參數(shù)會(huì)被忽略。

注意點(diǎn):

1、如果畫布的高度或?qū)挾仁?,那么會(huì)返回字符串“data:,”。

2、其中webkit內(nèi)核瀏覽器支持“image/webp”類型 。 建議使用Chrome瀏覽器。

代碼例子:

html:

<input type="file" id="inputimg">
<select id="myselect">
	<option value="1">webp格式</option>
  <option value="2">jpeg格式</option>
  <option value="3">png格式</option> 
</select>
<button id="start">開始轉(zhuǎn)換</button>
<p>預(yù)覽:</p>
<img id="imgShow" src="" alt="">

js:

/*事件*/
document.getElementById('start').addEventListener('click', function(){
	getImg(function(image){
		var can=imgToCanvas(image),
		  imgshow=document.getElementById("imgShow");
		imgshow.setAttribute('src',canvasToImg(can));
	});
});
// 把image 轉(zhuǎn)換為 canvas對(duì)象 
function imgToCanvas(image) { 	
  var canvas = document.createElement("canvas"); 
  canvas.width = image.width; 
  canvas.height = image.height;  
  canvas.getContext("2d").drawImage(image, 0, 0);  
  return canvas; 
} 
//canvas轉(zhuǎn)換為image
function canvasToImg(canvas) {
	var array=["image/webp","image/jpeg","image/png"],
	  type=document.getElementById('myselect').value-1;
  var src = canvas.toDataURL(array[type]);
  return src;
}
//獲取圖片信息
function getImg(fn){
	var imgFile = new FileReader();
	try{
		imgFile.onload = function(e) {
			var image = new Image();
			image.src= e.target.result; //base64數(shù)據(jù) 
			image.onload=function(){
				fn(image);
			}
		}
		imgFile.readAsDataURL(document.getElementById('inputimg').files[0]);
	}catch(e){
		console.log("請(qǐng)上傳圖片!"+e);
	}
}

在線Demo:

地址:http://www.dbjr.com.cn/tools/webp.html

說明:需要在chrome瀏覽器中使用,大家可以自行發(fā)揮可以做個(gè)批量轉(zhuǎn)換。

到此這篇關(guān)于js+canvas實(shí)現(xiàn)圖片格式webp/png/jpeg在線轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)webp/png/jpeg在線轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js實(shí)現(xiàn)文本框支持加減運(yùn)算的方法

    js實(shí)現(xiàn)文本框支持加減運(yùn)算的方法

    這篇文章主要介紹了js實(shí)現(xiàn)文本框支持加減運(yùn)算的方法,可實(shí)現(xiàn)文本框輸入加減運(yùn)算式同時(shí)右側(cè)實(shí)時(shí)顯示對(duì)應(yīng)計(jì)算結(jié)果的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • Uniapp全局消息提示以及其組件的實(shí)現(xiàn)方法

    Uniapp全局消息提示以及其組件的實(shí)現(xiàn)方法

    當(dāng)時(shí)在做登錄那邊需要做一些交互,所以必不可少要用到消息提示框,下面這篇文章主要給大家介紹了關(guān)于Uniapp全局消息提示以及其組件的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 原生js+ajax分頁(yè)組件

    原生js+ajax分頁(yè)組件

    這篇文章主要為大家詳細(xì)介紹了原生js+ajax分頁(yè)組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • Javascript表格翻頁(yè)效果的具體實(shí)現(xiàn)

    Javascript表格翻頁(yè)效果的具體實(shí)現(xiàn)

    表格翻頁(yè)的實(shí)現(xiàn)方式有很多,下面以js為例為大家詳細(xì)介紹下表格翻頁(yè)效果的具體實(shí)現(xiàn),感興趣的朋友可不要錯(cuò)過
    2013-10-10
  • Js制作簡(jiǎn)單彈出層DIV在頁(yè)面居中 中間顯示遮罩的具體方法

    Js制作簡(jiǎn)單彈出層DIV在頁(yè)面居中 中間顯示遮罩的具體方法

    這篇文章介紹了Js制作簡(jiǎn)單彈出層DIV在頁(yè)面居中 中間顯示遮罩的具體方法,有需要的朋友可以參考一下
    2013-08-08
  • 在Monaco Editor中實(shí)現(xiàn)斷點(diǎn)設(shè)置的方法詳解

    在Monaco Editor中實(shí)現(xiàn)斷點(diǎn)設(shè)置的方法詳解

    Monaco Editor 是 vscode 等產(chǎn)品使用的代碼編輯器,功能強(qiáng)大(且復(fù)雜),由微軟維護(hù),本文在 React + TypeScript(Vite)框架下使用 @monaco-editor/react 并介紹開發(fā)斷點(diǎn)顯示時(shí)踩到的坑,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2024-04-04
  • DPlayer.js視頻播放插件使用方法

    DPlayer.js視頻播放插件使用方法

    這篇文章主要為大家詳細(xì)介紹了JSx實(shí)現(xiàn)簡(jiǎn)單控制視頻播放倍速,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • uniapp項(xiàng)目?jī)?yōu)化方式及建議

    uniapp項(xiàng)目?jī)?yōu)化方式及建議

    性能優(yōu)化自古以來就是重中之重,本文關(guān)于uniapp項(xiàng)目?jī)?yōu)化方式最全整理,會(huì)根據(jù)開發(fā)情況進(jìn)行補(bǔ)充,感興趣的可以了解一下
    2021-08-08
  • layui的select聯(lián)動(dòng)實(shí)現(xiàn)代碼

    layui的select聯(lián)動(dòng)實(shí)現(xiàn)代碼

    今天小編就為大家分享一篇layui的select聯(lián)動(dòng)實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • js父頁(yè)面與子頁(yè)面不同時(shí)顯示的方法

    js父頁(yè)面與子頁(yè)面不同時(shí)顯示的方法

    這篇文章主要介紹了js父頁(yè)面與子頁(yè)面不同時(shí)顯示的方法,打開一個(gè)頁(yè)面后,父頁(yè)面DISABLE,在子頁(yè)面關(guān)閉后,父頁(yè)面ENABLE,是比較實(shí)用的技巧,需要的朋友可以參考下
    2014-10-10

最新評(píng)論