I'm trying to incorporate some webp images into our website after following some google page speed insights guidelines. However, for some reason, it's not displaying the webp image - what am I doing wrong?
I've created a test page to show the issue. I'm sure it's something dumb I'm doing. Link here:
https://personalised.clothing/page/default2
The image should be showing here:
Before you ask, the file is definitely on the server, proof below:
the code I am using is below:
<picture>
<source srcset="/images/banners/Homepage-Banner-1-1920.webp" type="image/webp" />
<source srcset="/images/banners/Homepage-Banner-1-1920.jpg" type="image/jpeg" />
<img class="banner-image" src="/images/banners/Homepage-Banner-1-1920.jpg" alt="yazzoo homepage banner" />
</picture>
It's just showing the alt tag - it's not even getting to the img tag, so I'm very confused, as everywhere seems to say that if one images doesn't load, it will go to the next image. The source domain for the images is https://personalised.clothing
Related
I'm trying to render different images in chrome and in safari. The problem is that we are using latest formats of images (like webp and jpeg2000) but safari won't accept webp. So what I would like to have is without js, if possible, a conditional rendering of sources. I pretty sure I can solve it using the "picture" tag of HTML5, or maybe a css solution but I haven't done it succesfully yet.
I tried this with picture tag:
<picture>
<source srcset="img_pink_flowers.webp">
<source srcset="img_white_flower.jp2">
<img src="img_orange_flowers.jpg" alt="Flowers" style="width:auto;">
</picture>
More details about the project is that I am using React but I do not think this is relevant for the issue. Any more info you might required will be provided!
Thanks very much for the help!
What's wrong with this picture tag?
<picture>
<source type="image/webp" srcset="https://media3.giphy.com/media/8FNlmNPDTo2wE/200.webp">
<source type="video/mp4" srcset="https://media3.giphy.com/media/8FNlmNPDTo2wE/200.mp4">
<img src="https://media3.giphy.com/media/8FNlmNPDTo2wE/200.gif" width="356" height="200" alt="me-5sf-fickledavid-8FNlmNPDTo2wE">
</picture>
Chrome should pick up the webp image but it always uses img with gif. If I remove the img tag Chrome shows nothing.
This is the pen I made as a demo https://codepen.io/maxim-palenov/pen/oNvarZY.
There is no issue in this at all. It is working as expected. In the img tag, it won't replace the webp image.
Here's what you've to do.
Rename the gif image to something is broken link. Still, it will keep showing the image.
After above, if you rename the webp image link, now you'll see the image getting broken.
<picture>
<source type="image/webp" srcset="images/me.webp">
<img id="avatar" src="images/me.webp" alt="Me">
</picture>
When I use the picture element, the browser(chrome) doesn't load the image with the other resources. However, when I replace <picture> with only <img> element it works fine:
<img id="avatar" src="images/me.webp" alt="Me">
Why is that happening?
Your code will load the me.webp image if the browser supports its. If not, the jpg image will be shown (which works). Chrome 67 supports webp format, so the only issue I can figure out is that me.webp is not in the images folder.
AFAIK, <picture> is used when you want multiple possible images to use in a responsive design. The <img> at the end is the fallback. It sounds like images/me.webp isn;'t working.
Unless you are really making use of <picture>, use <img>.
I'm facing a problem, I just can't seem to find out what the problem is, I have:
<picture>
<source type="image/webp" srcset="/images/meh_logo.webp">
<img src="/images/meh_logo.png" type="image/png">
</picture>
On chrome, it's just defaulting to the png logo.
If I hover over the link in inspector, it shows the webp image.
If I open the webp image link in a new tab, it loads file.
My headers return:
image/webp,image/apng,image/,/*;q=0.8
If I change source srcset to img srcset - that will display the webp file.
Chrome: 70.0.3538.110
Tested locally on MAMP Pro and doesn't display.
The WEBP is a tree. The PNG is a rose. You used the code below...
<picture>
<source type="image/webp" srcset="https://www.gstatic.com/webp/gallery/4.sm.webp">
<img src="https://www.gstatic.com/webp/gallery3/1.sm.png" type="image/png">
</picture>
According to this source you should repeat the source, like this:
<picture>
<source srcset="https://www.gstatic.com/webp/gallery/4.sm.webp" type="image/webp">
<source srcset="https://www.gstatic.com/webp/gallery3/1.sm.png" type="image/png">
<img src="https://www.gstatic.com/webp/gallery3/1.sm.png" alt="Image" class="tm-img">
</picture>
When I run these scripts in FF and Chrome they show a tree, thus show the WEBP image. What do you see?
After reading through this question and answer, I was still a little confused, so I'd like to add this clarification: When you use the Chrome inspect tool on your image, it will still highlight the line with your <img> in it, which makes it seem that the larger file is loading. But, as you can see with the example given, the WEBP is actually what is loading and showing on the screen, because neither snippet shows the photograph of a rose found here.
I'm trying to migrate to using WebP images on our website.
We have quite a few images in our S3 buckets, so it would take a while to convert all of them to webp. Instead, I'd like to show webp only if the webp version is available (it'll have a deterministic URL structure); and if not, show the original JPG/PNG.
When I try the following, it doesn't work (don't worry the icons on the top right. also webpImageUrl and originalImageUrl have the correct values):
<picture>
<source srcSet={`${webpImageUrl}`} type="image/webp" />
<img src={`${originalImageUrl}`} />
</picture>
Thanks in advance!