如何在winjs中设置png图像的颜色
how to set png image color in winjs
嗨,我正在使用html和javascript开发一个windows 8应用程序。在那里,我必须显示一些从api接收的png图像,并且必须将它们的颜色设置为从api接收。我在谷歌上搜索了很多,但没有找到解决方案。虽然我知道在xaml中它可以做一些像这个一样的事情
<Rectangle Fill="{Binding Path=widget.logo, Converter={StaticResource PSWidgetLogoColorConverter1}}" Height="60" Width="60">
<Rectangle.OpacityMask>
<ImageBrush ImageSource="{Binding Path=widget.logo,Converter={StaticResource PSWidgetImageConverter1}}"/>
</Rectangle.OpacityMask>
</Rectangle>
但不知道怎么在这里做。
欢迎您的宝贵建议,请帮忙。
我认为您必须更改canvas
元素内部的颜色。
-
将画布标签添加到您的应用程序:
<canvas id="myCanvas" />
-
在画布内加载图像:
var myImage = new Image(); canvas = document.getElementById("myCanvas"); if (canvas.getContext) { ctx = canvas.getContext("2d"); myImage.onload = function() { ctx.drawImage(myImage, 0, 0); } myImage.src = "kestral.png"; }
-
获取图像数据并根据需要进行更改:
getImageData
返回画布内x、y、width和height位置的所有rgba值。所以是:getImageData(x,y,width,height)
。结果,你得到了一个大小为:width*height*4的数组。然后你可以在它上面循环并更改每个rgba颜色:
myImage = ctx.getImageData(0, 0, 200, 200);
var picLength = 200*200;
// Loop through data.
for (var i = 0; i < picLength * 4; i += 4) {
// First bytes are red bytes.
// Second bytes are green bytes.
// Third bytes are blue bytes.
// Fourth bytes are alpha bytes
//check for full alpha
if(myImage.data[i+3] == 255) {
//change it to black
myImage.data[i]=0;
myImage.data[i+1]=0;
myImage.data[i+2]=0;
myImage.data[i+3]=0;
}
}
将更改后的图像数据放回
ctx.putImageData(myImage, 0, 0);
下面是一个关于msdn的完整示例。
相关文章:
- 将SVG下载为PNG图像
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- 将画布下载为PNG图像
- 在 JavaScript 中将一个.PNG图像拖放到另一个图像上
- 将普通的 PNG 图像转换为 JSON 数据,然后存储到对象
- 使用AJAX从PHP获取PNG图像
- 如何使用纯javascript或jQuery将HTML5画布屏幕作为png图像保存到项目的特定文件夹中
- 带有png图像的3D动画
- 如何从 base64 数据 URI 在服务器端保存 PNG 图像
- PNG 图像更改颜色
- 使用网络工作者和画布合并 png 图像
- 将 png 图像从 JavaScript 传递到 PHP(错误:请求 URI 太大)
- 如何将画布另存为 PNG 图像
- 如何使 png 图像充当按钮
- 如何将.png图像放入头部标题中
- 使用 FabricJS 将图案添加到 png 图像(在画布中)
- 将用Javascript绘制的外部SVG文件导出为PNG图像
- 通过画布从 svg 或 svg 输出 300 张具有正确文件名的 png 图像
- 使用 JavaScript 绘制到 HTML5 画布时调整.png图像的大小
- Html代码到Png图像