一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務(wù)器之家 - 編程語言 - JavaScript - js+canvas實(shí)現(xiàn)圖片格式webp/png/jpeg在線轉(zhuǎn)換

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

2021-08-29 17:07fly63 JavaScript

這篇文章主要介紹了js+canvas實(shí)現(xiàn)圖片格式webp/png/jpeg在線轉(zhuǎn)換,需要的朋友可以參考下

功能需求:
我們?cè)诰W(wǎng)頁中上傳一張圖片,選擇不同的格式,將該圖片轉(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)頁中。點(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:

?
1
2
3
4
5
6
7
8
9
<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:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*事件*/
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);
    }
}

說明:需要在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)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:http://www.fly63.com/article/detial/511

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一级一级做性视频 | 亚洲欧美激情日韩在线 | 小伙无套内射老女人 | 国产毛片在线高清视频 | 免费在线电视 | 国产麻豆精品原创 | 91免费播放人人爽人人快乐 | 亚洲99久久无色码中文字幕 | 欧美在线播放一区二区 | 国产精品66福利在线观看 | 日本不卡不码高清免费观看 | 欧美日韩在线观看区一二 | 色戒完整版 | 四虎院影永久在线观看 | ffyybb免费福利视频 | 精品蜜臀AV在线天堂 | 久久人妻熟女中文字幕AV蜜芽 | 四虎最新紧急更新地址 | 91精品啪在线观看国产老湿机 | 欧美高清在线精品一区 | 韩国三级年轻小的胰子完整 | aaa一级特黄 | 国产精品女主播大秀在线 | 婷婷99视频精品全部在线观看 | 亚洲国产情侣一区二区三区 | 亚洲精品在看在线观看 | 国产精品久久久久久久久久久久久久 | 色综合久久最新中文字幕 | 精品久久免费观看 | 1024视频色版在线网站 | 日韩伦理在线观看 | 欧美破处女视频 | 国产美女下面流出白浆视频 | 亚洲国产欧美目韩成人综合 | 久久精品无码人妻无码AV蜜臀 | 99re在线精品视频免费 | 美女被绑着吸下部的故事 | 日本人添下面的全过程 | 国产青草视频在线观看免费影院 | 1024国产看片在线观看 | 9久re在线观看视频精品 |