我正在查看android文档,其中解释了有关屏幕密度,不同屏幕密度和分辨率的概念。
如果我理解正确,
resolution is the total absolute no of pixels that are shown on the screen
而
density is the number of pixels per inch
。
现在,我正在经历this doc,它说:
系统图库应用程序显示使用您的Android设备的摄像头拍摄的照片,这些照片的分辨率通常比设备的屏幕密度高
这句话让我再次感到困惑。如何将图像的分辨率与屏幕的密度进行比较?
或者只是说图像的分辨率会比屏幕的分辨率高吗?
答案 0 :(得分:1)
这只是文档中术语的不幸使用。
图片具有特定分辨率:X像素高,Y像素宽。如果屏幕的分辨率与图片相同或更高,则可以按原样显示整个图片。否则,需要将图片“压缩”到可用空间中。
请注意,这与屏幕的密度无关。具有相同分辨率的Denser屏幕在物理上只会更小,因为密度与每个像素的物理尺寸成反比。
答案 1 :(得分:1)
假设您的手机以4000x3000像素的分辨率拍摄照片。
假设您使用的iPhone X的像素为var canvas = document.createElement("canvas");
canvas.width = ??;
canvas.height = ??;
var ctx = canvas.getContext("2d");
// draw an arraw and rounded box
.....
.....
var iconUrl = canvas.toDataURL();
var offStyle = new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgba(255,255,255,0)'
}),
stroke: new ol.style.Stroke({
color: 'green',
width: 1.5
})
});
var onStyle = new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgba(255,255,255,0)'
}),
stroke: new ol.style.Stroke({
color: 'black',
width: 1.5
})
});
var styleFunction = function (feature, resolution) {
if (off) { // or use (resolution > ????)
return offStyle;
else {
var styles = [onStyle];
if (feature.getGeometry().getType == 'Polygon') {
styles.push( new ol.style.Style({
geometry: feature.getGeometry().getInteriorPoint(),
image: new ol.style.Icon({
src: iconUrl,
// options to anchor the icon
....
}),
text: new ol.style.Text({
scale: 1,
text: feature.get('.....'),
font: 'normal 10px FontAwesome',
fill: new ol.style.Fill({
color: 'black'
}),
}),
zIndex: 100
}));
}
return styles;
}
}
为458 ppi,并且手机的尺寸为5.69x2.79英寸,因此它可以容纳的总像素几乎为(1125 x 2436像素)
这意味着在100%缩放的图像中,它只能适合屏幕上的一部分。