使用 javascript 幻灯片放映时,Internet Explorer 在图像上出现不需要的伪影
当使用 javascript 幻灯片时,我们在所有版本的 Internet Explorer 浏览器中都会遇到以下奇怪的(好吧......)行为。
你可以在这里明白我的意思 http://www.tospirto.net /index.php?ID=photo_gallery&Rec_ID=481
在最后 3 张图像中,有浏览器创建的白线和伪影。
正如我所说,对于所有版本的 Internet Explorer 都是如此。
你以前见过这个吗?
你知道是什么原因造成的吗???
谢谢
We're having the following weird (well...) behavior in all versions of Internet Explorer browsers when using javascript slideshows.
You can see what I mean here http://www.tospirto.net/index.php?ID=photo_gallery&Rec_ID=481
In the last 3 images there are white lines and artifacts created by the browser.
This is true as I said for all versions of Internet Explorer.
Have you seen this before??
Do you ave any idea what is causing this???
Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我可以看到文物 - 奇怪!这是 IE 的 JPEG 渲染算法中的一个已知问题。如果您在 Photoshop 中放大图片,您会发现伪影被限制在编码块内。 (请原谅,但我假设您大致了解 JPEG 的编码方式。)
尝试使用不同的质量甚至不同的格式(例如 PNG,尽管这会给您带来更大的文件)对图像进行编码。您可以在这里找到有关如何解决此问题的其他想法:
http://forum.jquery.com/topic/ie-褪色图像时出现死像素
I can see the artifacts - strange! This is a known issue in IE's JPEG rendering algorithm. If you enlarge the pictures in Photoshop, you will see that the artifacts are restricted within encoding blocks. (Pardon me, but I assume you know roughly how JPEG is encoded.)
Try encoding the images with a different quality, or even in a different format (like PNG, even though that would give you larger files). You can find other thoughs on how to solve this here:
http://forum.jquery.com/topic/ie-dead-pixels-when-fading-images
这是
alpha
过滤器中的一个错误,这就是 IE 中实现透明淡入淡出的方式(在版本 9 之前,最终支持正确的 CSSopacity
)。当直接在图像上使用时,任何具有 RGB 值 2、5、10(又名#02050A
)的像素都被视为透明。这就是例如 1 位透明度的方式。 GIF 在
alpha
过滤器中实现。显然,微软认为这种特殊的颜色很少使用,没有人会注意到。哎呀。通过将
alpha
过滤器(或使用它的淡入淡出脚本)放在容器上而不是图像本身来避免该错误。
或者,您可以使用
AlphaImageLoader
过滤器(与 IE6 上的透明 PNG 加载相同的技巧)来加载图像,或者在您需要时删除alpha
过滤器。不在淡入淡出过程中(在淡入淡出过程中您仍然会看到该错误,但至少它不会以 100% 的速度出现)。It's a bug in the
alpha
filter, which is how transparent fades are implemented in IE (before version 9, which finally supports proper CSSopacity
). When used directly on an image, any pixel with the RGB values 2,5,10 (aka#02050A
) is treated as transparent.This is how 1-bit transparency from eg. GIF is implemented in the
alpha
filter. Evidently Microsoft think this particular colour is so seldom used no-one will notice. Oops.Avoid the bug by putting the
alpha
filter (or fade script that uses it) on a container<div>
instead of on the image itself.Alternatively, you can use an
AlphaImageLoader
filter (same hack as for transparent PNG loading on IE6) to load the image, or just get rid of thealpha
filter when you're not in the middle of a fade (you still see the bug during fade but at least it doesn't appear at 100%).好吧,经过一番搜索,我发现了问题所在。
该效果称为瑞士军队图像伪影,您可以在这里找到更多相关信息:http ://www.dynamicdrive.com/forums/showthread.php?t=34462
来自探索者的另一个大错误:)
解决方案位于参考文章中,即使用 Photoshop 上的色阶工具删除绝对黑色例子。使用 Photoshop 中的操作对所有图片进行批量更改,效果非常好。
OK I found what was wrong after some searching.
The effect is called swiss army image artifacts and you can find more about it here: http://www.dynamicdrive.com/forums/showthread.php?t=34462
Another great bug from explorers :)
The solution is on the referenced article which is to remove absolute blacks using the levels tool on the photoshop for example. Did a batch change using actions in photoshop for all pictures and works like a charm.