像素尺寸的两倍

时间:2013-10-11 12:21:21

标签: html css image pixel

我刚刚为我的项目http://i.imgur.com/9FLj6Uk.png创建了一些像素艺术品。我想在我的网站上使用它。正如你所看到的,它是小像素艺术。我希望将一个像素绘制为2 * 2像素而不是1 * 1像素。我会用2 * 2像素而不是一个像素重绘图片,但这似乎是不好的解决方案。

我尝试使用CSS

img.pixel {
  width: 32px;
  height: 32px
}

但这不起作用,它在浏览器中显示出奇怪的色调。我想看看硬像素。有谁知道这个问题的任何解决方案?

This is the problem when I use the CSS above 当我使用上面的CSS

时,这就是问题所在

3 个答案:

答案 0 :(得分:3)

在浏览器中,像素艺术很难实现,这主要是因为缺乏对像素化和#34;或者"脆边"图像渲染。它应该是supported in CSS4

目前CSS堆栈看起来像这样,虽然看起来好像Chrome 30和Opera 16已经破坏了对CSS解决方案的支持

image-rendering:optimizeSpeed;
image-rendering:-moz-crisp-edges;
image-rendering:-o-crisp-edges;
image-rendering:optimize-contrast;
image-rendering:-webkit-optimize-contrast;
-ms-interpolation-mode: nearest-neighbor;

@Phrogz查看this answertest case。另请参阅有关该主题的mozilla's documentation。对于现在的普遍支持,JS解决方案可能必须暂时工作,例如在文章drawing pixels is hard上看到的那样:

var resize = function( img, scale ) {
// Takes an image and a scaling factor and returns the scaled image

// The original image is drawn into an offscreen canvas of the same size
// and copied, pixel by pixel into another offscreen canvas with the 
// new size.

var widthScaled = img.width * scale;
var heightScaled = img.height * scale;

var orig = document.createElement('canvas');
orig.width = img.width;
orig.height = img.height;
var origCtx = orig.getContext('2d');
origCtx.drawImage(img, 0, 0);
var origPixels = origCtx.getImageData(0, 0, img.width, img.height);

var scaled = document.createElement('canvas');
scaled.width = widthScaled;
scaled.height = heightScaled;
var scaledCtx = scaled.getContext('2d');
var scaledPixels = scaledCtx.getImageData( 0, 0, widthScaled, heightScaled );

for( var y = 0; y < heightScaled; y++ ) {
    for( var x = 0; x < widthScaled; x++ ) {
        var index = (Math.floor(y / scale) * img.width + Math.floor(x / scale)) * 4;
        var indexScaled = (y * widthScaled + x) * 4;
        scaledPixels.data[ indexScaled ] = origPixels.data[ index ];
        scaledPixels.data[ indexScaled+1 ] = origPixels.data[ index+1 ];
        scaledPixels.data[ indexScaled+2 ] = origPixels.data[ index+2 ];
        scaledPixels.data[ indexScaled+3 ] = origPixels.data[ index+3 ];
    }
}
scaledCtx.putImageData( scaledPixels, 0, 0 );
return scaled;

}

阅读文章,视网膜显示和移动野生动物园的存在可能会增加额外的复杂性,以呈现正确尺寸的像素艺术。虽然使用iOS7的移动游猎可能会有所纠正。

答案 1 :(得分:1)

我建议您使用svg图片,因为它可以扩展并为您提供所需内容。

您可以从以下链接中了解有关相同内容的更多信息。

https://developer.mozilla.org/en/docs/SVG_In_HTML_Introduction

希望这有帮助。

答案 2 :(得分:-4)

你正在寻找这个吗? <img src="http://i.imgur.com/9FLj6Uk.png width="32" height="32">

check fiddle