当网站输出到客户端时,我正在尝试优化网站的大小。缓存时,我分别只有1.9MB和29KB。问题在于,第一次加载包含的图像对于移动设备而言并未经过优化。它具有1080p分辨率。
因此,我正在寻找一种方法,该方法允许我首先加载低分辨率版本(min.bg.jpg
),一旦网站加载完毕,请使用高分辨率版本-
甚至分辨率接近所用设备的分辨率版本(NNNxNNN.bg.jpg
或只是bg.jpg
) 。
就像每个人都期望的那样,使用CSS设置背景。它应用于主体,整个语句如下所示:
body {
background: url("/cdn/theme/images/bg.jpg");
color: white;
height: 100%;
width: 100%;
background-repeat: no-repeat;
background-position: 50% 50%;
background-attachment: fixed;
}
现在,我想将其更改为min.bg.jpg
代替第一次加载,然后再执行以下操作:
jQuery(function(){
jQuery("body").[...]
});
如何异步下载新背景,然后将其作为新CSS背景图像插入?
为了显示一些差异,这是我用于测试的主版本和迷你版本的示例:
Ingwie@Ingwies-Macbook-Pro.local ~/Work/BIRD3/cdn/theme/images $ file *.jpg
bg.jpg: JPEG image data, EXIF standard
min.bg.jpg: JPEG image data, JFIF standard 1.01
Ingwie@Ingwies-Macbook-Pro.local ~/Work/BIRD3/cdn/theme/images $ du -h *.jpg
1,0M bg.jpg
620K min.bg.jpg
这是我使用的方法
CSS:
#div_whatever {
position: whatever;
background-repeat: no-repeat;
background-position: whatever whatever;
background-image: url(dir/image.jpg);
/* image.jpg is a low-resolution at 30% quality. */
}
#img_highQuality {
display: none;
}
HTML:
<img id="img_highQuality" src="dir/image.png">
<!-- img.png is a full-resolution image. -->
<div id="div_whatever"></div>
JQUERY:
$("#img_highQuality").off().on("load", function() {
$("#div_whatever").css({
"background-image" : "url(dir/image.png)"
});
});
// Side note: I usually define CSS arrays because
// I inevitably want to go back and add another
// property at some point.
怎么了:
纯JS版本
此示例对于更改一个到多个元素将非常有效。
CSS:
.hidden {
display: none;
}
#div_whatever {
position: whatever;
background-repeat: no-repeat;
background-position: whatever whatever;
background-image: url(dir/image.jpg);
/* image.jpg is a low-resolution at 30% quality. */
}
HTML:
<div id="div_whatever"></div>
<img id="img_whatever" class="hidden" src="dir/image.png" onload="upgradeImage(this);">
JAVASCRIPT:
function upgradeImage(object) {
var id = object.id;
var target = "div_" + id.substring(4);
document.getElementById(target).style.backgroundImage = "url(" + object.src + ")";
}
更新/增强(1/31/2017)
此增强功能的灵感来自gdbj的出色之处,即我的解决方案导致在三个位置指定了图像路径。尽管我没有使用gdbj的addClass()技术,但以下jQuery代码经过修改以提取图像路径(而不是将其硬连线到jQuery代码中)。更重要的是,此版本允许从低分辨率到高分辨率的多个图像替换。
CSS
.img_highres {
display: none;
}
#div_whatever1 {
width: 100px;
height: 100px;
background-repeat: no-repeat;
background-position: center center;
background-image: url(PATH_TO_LOW_RES_PHOTO_1);
}
#div_whatever2 {
width: 200px;
height: 200px;
background-repeat: no-repeat;
background-position: center center;
background-image: url(PATH_TO_LOW_RES_PHOTO_2);
}
HTML
<div id="div_whatever1"></div>
<img id="img_whatever1" class="img_highres" src="PATH_TO_HIGH_RES_PHOTO_1">
<div id="div_whatever2"></div>
<img id="img_whatever2" class="img_highres" src="PATH_TO_HIGH_RES_PHOTO_2">
JQUERY
$(function() {
$(".img_highres").off().on("load", function() {
var id = $(this).attr("id");
var highres = $(this).attr("src").toString();
var target = "#div_" + id.substring(4);
$(target).css("background-image", "url(" + highres + ")");
});
});
发生什么事:
问题内容: 我需要使用Java程序减小图像的大小(而不是宽度和高度)。他们为此提供了任何好的API吗? 我需要将大小从1MB减少到大约50kb-100 kb。当然,分辨率会降低,但这并不重要。 问题答案: 这是工作代码 这段代码对我来说很棒。如果需要调整图像大小,则可以在此处更改x和y比例J;
好的,这里有一个奇怪的问题,我有问题(用gcc btw编译) 下面是用于命令提示的Mandelbrot分形生成器的源代码。我以前做过这项工作,我想加快自己的测试速度,看看我能以多快的速度生成命令提示符中实际生成Mandelbrot分形所需的代码。我经常这样做是为了给自己找点乐子 不管怎样,我遇到了一个新问题,我不太明白问题是什么。当分形呈现时,无论我设置了多少次迭代或什么转义值,它都将始终显示为椭
在Java 9中,已经推出了一种新的多分辨率图像API,支持具有不同分辨率变体的多个图像。 该API允许将具有不同分辨率的一组图像用作单个多分辨率图像。 以下是多分辨率图像的主要操作。 - 获取一个特定的图像,这是最好的变体,以指定的尺寸表示这个逻辑图像。 - 获取所有分辨率变体的可读列表。 示例 执行上面示例代码,得到以下结果 -
注意:Photoshop 提供了已更新的“图像大小”对话框。请参阅调整图像大小,以了解更多信息。 关于像素尺寸和打印图像分辨率 像素尺寸测量了沿图像的宽度和高度的总像素数。分辨率是指位图图像中的细节精细度,测量单位是像素/英寸 (ppi)。每英寸的像素越多,分辨率越高。一般来说,图像的分辨率越高,得到的印刷图像的质量就越好。两幅相同的图像,分辨率分别为 72 ppi 和 300 ppi;套印缩放比
我有一个java的列表。awt。图像,每个分辨率为300 DPI。我想打印它们,当我开始打印这些图像时(使用javax.PrintService API),只打印一些图像的一部分,因为Java的打印/3D类默认使用72DPI(相对于我的图像的300 DPI)。但是,当我使用72 DPI的图像(与Java默认值具有相同的分辨率)时,所有图像都可以很好地打印(打印整个图像时,而不仅仅是其中的一部分)。
使用Java 9,引入了一种新的多分辨率图像API,它支持具有不同分辨率变体的多个图像。 此API允许将具有不同分辨率的一组图像用作单个多分辨率图像。 以下是多分辨率图像的主要操作。 Image getResolutionVariant(double destImageWidth, double destImageHeight) - 获取特定图像,该图像是表示指定大小的逻辑图像的最佳变体。 Lis