Skip to content

Commit d75aee4

Browse files
committed
Fix: image rendering issue on GSoC 2025 blog post (#441)
1 parent ff7d087 commit d75aee4

File tree

3 files changed

+85
-17
lines changed

3 files changed

+85
-17
lines changed

package-lock.json

Lines changed: 54 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/pages/News/NewsDetailPage.tsx

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -275,18 +275,26 @@ const NewsDetailPage: React.FC = () => {
275275
animate={{ opacity: 1, y: 0 }}
276276
transition={{ duration: 0.5 }}
277277
>
278-
<img
279-
src={post.image}
280-
alt={post.title}
281-
className="w-full h-auto max-h-80 object-contain mx-auto cursor-pointer hover:scale-105 transition-transform duration-300"
282-
onClick={() =>
283-
setModalImage({
284-
src: post.image,
285-
alt: post.title,
286-
})
287-
}
288-
data-zoomable="true"
289-
/>
278+
<picture>
279+
{post.image.endsWith('.png') && (
280+
<source
281+
srcSet={post.image.replace(/\.png$/, '.webp')}
282+
type="image/webp"
283+
/>
284+
)}
285+
<img
286+
src={post.image}
287+
alt={post.title}
288+
className="w-full h-auto max-h-80 object-contain mx-auto cursor-pointer hover:scale-105 transition-transform duration-300"
289+
onClick={() =>
290+
setModalImage({
291+
src: post.image.replace(/\.png$/, '.webp'),
292+
alt: post.title,
293+
})
294+
}
295+
data-zoomable="true"
296+
/>
297+
</picture>
290298
</motion.div>
291299
)}
292300

@@ -407,6 +415,7 @@ const NewsDetailPage: React.FC = () => {
407415
/>
408416
<p className="text-white text-center mt-2 text-sm">
409417
{modalImage.alt}
418+
{modalImage.src}
410419
</p>
411420
<button
412421
onClick={closeImageModal}

src/pages/News/NewsPage.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -498,11 +498,16 @@ const NewsPage: React.FC = () => {
498498
className={`${viewMode === 'list' ? 'h-full' : 'h-56'} overflow-hidden`}
499499
>
500500
{post.image ? (
501-
<img
502-
src={post.image}
503-
alt={post.title}
504-
className="w-full h-full object-cover group-hover:scale-110 transition-transform duration-700"
505-
/>
501+
<picture>
502+
{post.image.endsWith(".png") && (
503+
<source srcSet={post.image.replace(/\.png$/, ".webp")} type="image/webp" />
504+
)}
505+
<img
506+
src={post.image}
507+
alt={post.title}
508+
className="w-full h-full object-cover group-hover:scale-110 transition-transform duration-700"
509+
/>
510+
</picture>
506511
) : (
507512
<div className="w-full h-full bg-gradient-to-br from-blue-100 via-purple-50 to-green-100 flex items-center justify-center">
508513
<div className="text-6xl opacity-50">📰</div>

0 commit comments

Comments
 (0)