<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Romain Pellerin's Blog - Cycling</title><link>https://romainpellerin.eu/</link><description></description><lastBuildDate>Sun, 10 May 2026 22:22:00 +0200</lastBuildDate><item><title>AI Prompt For Cool Strava Photos</title><link>https://romainpellerin.eu/ai-prompt-for-cool-strava-photos.html</link><description>&lt;p&gt;Using Gemini (free version - version 3 Fast): upload a photo + the transparent PNG that Strava generates with ride data, then prompt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Position the stats of this ride on the road, distorting them to match the strong receding perspective of the road. Remove the Strava text. The route must glow in a warm neon orange, feel physically embedded in the ground, with realistic depth, light spill and perspective. Never floating or holographic. Do not add glowing effects to the text, keep it white as it is originally. Only make the route glow.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="img-comp-container"&gt;
  &lt;img src="https://romainpellerin.eu/images/ai-prompt-strava/ai-prompt-strava-original.jpg" class="img-comp-base"&gt;
  &lt;img src="https://romainpellerin.eu/images/ai-prompt-strava/ai-prompt-strava-result.jpg" class="img-comp-overlay"&gt;
  &lt;input type="range" min="0" max="100" value="50" class="img-comp-slider"&gt;
  &lt;div class="img-comp-handle"&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;style&gt;
.img-comp-container {
  position: relative;
  width: 100%;
  overflow: hidden;
  user-select: none;
  display: flex; /* Ensures no extra bottom spacing from images */
}

.img-comp-container img {
  display: block;
  width: 100%;
  height: auto;
}

.img-comp-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  clip-path: inset(0 50% 0 0);
}

.img-comp-slider {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  opacity: 0;
  cursor: ew-resize;
  z-index: 10;
}

.img-comp-handle {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 50%;
  width: 2px;
  background: white;
  pointer-events: none;
  z-index: 9;
  transform: translateX(-50%);
}

.img-comp-handle::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 40px;
  height: 40px;
  background: white;
  border-radius: 50%;
  box-shadow: 0 0 10px rgba(0,0,0,0.5);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='15 18 9 12 15 6'%3E%3C/polyline%3E%3C/svg%3E"), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E");
  background-position: left 2px center, right 2px center;
  background-repeat: no-repeat;
  background-size: 20px;
}
&lt;/style&gt;

&lt;script&gt;
function initComparisonSliders() {
  const sliders = document.querySelectorAll('.img-comp-slider');
  sliders.forEach(slider =&gt; {
    const container = slider.parentElement;
    const overlay = container.querySelector('.img-comp-overlay');
    const handle = container.querySelector('.img-comp-handle');

    const update = () =&gt; {
      const value = slider.value;
      overlay.style.clipPath = `inset(0 ${100 - value}% 0 0)`;
      handle.style.left = value + '%';
    };

    slider.addEventListener('input', update);
    // Initial update to match default value
    update();
  });
}

if (document.readyState === 'loading') {
  document.addEventListener('DOMContentLoaded', initComparisonSliders);
} else {
  initComparisonSliders();
}
&lt;/script&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Romain Pellerin</dc:creator><pubDate>Sun, 10 May 2026 20:00:00 +0200</pubDate><guid isPermaLink="false">tag:romainpellerin.eu,2026-05-10:/ai-prompt-for-cool-strava-photos.html</guid><category>Cycling</category><category>cycling</category><category>ai</category><category>strava</category></item></channel></rss>