利用canvas下载图片,透明区默认变为黑色
2017-08-06 09:29
447 查看
问题:利用canvas下载图片,透明区默认变为黑色
HTML
JS
JS
个人不推荐第二种方法,觉得太繁琐啦
如果觉得太难理解,有篇文章写的更详细,可以点进去了解一下
http://blog.csdn.net/sinat_17775997/article/details/58708042
HTML
<canvas id="canvas"></canvas> <div style="display:none;"> <img id="source" src="img/rhino.jpg" width="300" height="227"> </div>
JS
line-numbers language-js" style="color:rgb(51,51,51);border-width:0px 0px 0px 5px;border-left-style:solid;border-left-color:rgb(63,135,166);margin-top:0px;margin-bottom:20px;padding:1em 0px 1em 3.8em;font-size:14px;line-height:24px;overflow:auto;font-family:consolas, monaco, 'Andale Mono', monospace]var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var image = document.getElementById('source'); ctx.drawImage(image, 33, 71, 104, 124, 21, 20, 87, 104);
生成的图片
png:
jpg:
解决方案有两种:
1.给canvas填充背景色为白色
[code]
JS
line-numbers language-js" style="margin-top:0px;margin-bottom:20px;color:rgb(51,51,51);border-width:0px 0px 0px 5px;border-left-style:solid;border-left-color:rgb(63,135,166);padding:1em 0px 1em 3.8em;font-size:14px;line-height:24px;overflow:auto;font-family:consolas, monaco, 'Andale Mono', monospace]var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var image = document.getElementById('source');line-numbers language-js" style="margin-top:0px;margin-bottom:20px;color:rgb(51,51,51);border-width:0px 0px 0px 5px;border-left-style:solid;border-left-color:rgb(63,135,166);padding:1em 0px 1em 3.8em;font-size:14px;line-height:24px;overflow:auto;font-family:consolas, monaco, 'Andale Mono', monospace][code]cxt.fillStyle="#FF0000"; cxt.fillRect(0,0,300,300); ctx.drawImage(image, 33, 71, 104, 124, 21, 20, 87, 104);
方法二:利用获取每个像素点值进行转换
[code] // 将canvas的透明背景设置成白色
var imageData = context.getImageData(0, 0, canvas.width, canvas.height);
for(var i = 0; i < imageData.data.length; i += 4) {
// 当该像素是透明的,则设置成白色
if(imageData.data[i + 3] == 0) {
imageData.data[i] = 255;
imageData.data[i + 1] = 255;
imageData.data[i + 2] = 255;
imageData.data[i + 3] = 255;
}
}
context.putImageData(imageData, 0, 0);
个人不推荐第二种方法,觉得太繁琐啦
如果觉得太难理解,有篇文章写的更详细,可以点进去了解一下
http://blog.csdn.net/sinat_17775997/article/details/58708042
相关文章推荐
- 下载保存的图片背景由透明变为黑色问题解决
- 利用photoshopcs6将gif格式图片变为背景透明
- 利用javascript和canvas获取UIWebView网页里的图片(不用再下载)
- 关于图片下载后保存背景透明变黑色的问题
- canvas默认是黑色全透明,不是白色全透明。
- [置顶] 利用canvas,把多张图合并成一张图片
- 如何用silverlight 做用于图片展示的画廊(三):利用silverlight + WCF +Linq 保存图片或照片,并利用silverlight +WCF下载图片显示在画廊中
- 利用开源框架Volley来下载文本和图片。
- android 利用canvas将来两张图片进行重合成一张大小一样的图片
- canvas导出为图片并用JS下载
- 解决java压缩图片透明背景变黑色的问题
- Js利用Canvas实现图片压缩
- FLASH CS 中图片变为透明,和舞台颜色一致的方法
- 如何利用火狐控制台下载网页图片
- 解决java压缩图片透明背景变黑色的问题
- Objective-C利用AFN实现图片下载,支持断点续传,显示下载进度
- 教你如何利用灰度图透明效果制作隐藏图片.part1
- canvas导出为图片并用JS下载
- Unity中如何利用一个协程和www类实现简单的图片下载
- txt,图片等实现默认下载而不是打开图片