<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: leony</title>
    <description>The latest articles on DEV Community by leony (@leony).</description>
    <link>https://dev.to/leony</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4154259%2Fd87df0ce-075c-4e8b-916f-a192163f10f3.png</url>
      <title>DEV Community: leony</title>
      <link>https://dev.to/leony</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leony"/>
    <language>en</language>
    <item>
      <title>I Built a Freemium Tool to Edit Text in Finished Images Without Photoshop</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Thu, 01 Oct 2026 09:40:17 +0000</pubDate>
      <link>https://dev.to/leony/i-built-a-freemium-tool-to-edit-text-in-finished-images-without-photoshop-2agm</link>
      <guid>https://dev.to/leony/i-built-a-freemium-tool-to-edit-text-in-finished-images-without-photoshop-2agm</guid>
      <description>&lt;p&gt;I’m leony, an indie maker who keeps bumping into the same small workflow pain: a poster, slide, screenshot, or ad is already exported, and only a few words need to change. Reopening the design file is often slower than it should be — especially when you don’t have the original layered source, or when you’re just fixing a typo before shipping.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://edittextinimage.com/" rel="noopener noreferrer"&gt;EditTextInImage&lt;/a&gt;, a freemium online tool that replaces text inside finished images while aiming to keep font, color, size, perspective, and background looking natural.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem I wanted to solve
&lt;/h2&gt;

&lt;p&gt;Most “image editors” are either full design suites or generic AI image generators. Neither is ideal when the asset is already done and you only need a wording change. What I wanted was closer to: upload the image, say what text is there now, say what it should become, and get a clean edit you can review before download.&lt;/p&gt;

&lt;p&gt;Typical cases for me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fix a heading typo on an exported slide&lt;/li&gt;
&lt;li&gt;Update a date or venue on a flyer&lt;/li&gt;
&lt;li&gt;Localize UI screenshots for another language&lt;/li&gt;
&lt;li&gt;Test a new ad headline without remaking the creative&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How the workflow works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Upload or paste a PNG, JPEG, or WebP (up to 10 MB).&lt;/li&gt;
&lt;li&gt;Enter the original visible text and the exact replacement.&lt;/li&gt;
&lt;li&gt;Generate — matching locations are found automatically; pick the right numbered match when the same words appear more than once.&lt;/li&gt;
&lt;li&gt;Optionally draw a selection box when automatic matching is unreliable.&lt;/li&gt;
&lt;li&gt;Use Compare to review the selected area and surroundings before you download.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last step matters. AI edits can look convincing at a glance and wrong up close, so I treat Compare as part of the product, not an afterthought.&lt;/p&gt;

&lt;h2&gt;
  
  
  Freemium, honestly
&lt;/h2&gt;

&lt;p&gt;Browsing and trying the flow is straightforward on the site. Generation is credit-based (packs shown on the product page), and commercial use follows the site’s credit/pack terms. Failed edits are auto-refunded when eligible. I’m not pretending this is a fully free unlimited Photoshop replacement — it’s a focused freemium tool for text-in-image edits.&lt;/p&gt;

&lt;p&gt;Also: EditTextInImage does &lt;strong&gt;not&lt;/strong&gt; support deceptive edits to identity documents, bank statements, official seals, or tampered receipts. That’s intentional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Companion reference package
&lt;/h2&gt;

&lt;p&gt;There’s a thin MIT reference package on GitHub and PyPI for people who prefer a small inspectable home next to the live product:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product: &lt;a href="https://edittextinimage.com/" rel="noopener noreferrer"&gt;https://edittextinimage.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/wayperlee/edittextinimage" rel="noopener noreferrer"&gt;https://github.com/wayperlee/edittextinimage&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Support: &lt;a href="mailto:support@edittextinimage.com"&gt;support@edittextinimage.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;edittextinimage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;edittextinimage&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;eti&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;eti&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open_homepage&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you edit marketing creatives, slides, or screenshots often, I hope this saves you a few reopen-the-source-file loops. Feedback on edge cases (perspective text, busy backgrounds, dense UI screenshots) is especially welcome.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>design</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What Makes a Seedance Prompt Usable? Camera Moves, Beats, and Constraints</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Thu, 01 Oct 2026 09:27:52 +0000</pubDate>
      <link>https://dev.to/leony/what-makes-a-seedance-prompt-usable-camera-moves-beats-and-constraints-2hdk</link>
      <guid>https://dev.to/leony/what-makes-a-seedance-prompt-usable-camera-moves-beats-and-constraints-2hdk</guid>
      <description>&lt;p&gt;I’m leony, an indie maker, and I’ve been collecting Seedance experiments because a vague video idea is not always a useful video prompt. “A cinematic shot of a city at night” describes a mood, but it leaves many production decisions unstated. What is the subject doing? Where does the camera move? What changes halfway through the shot? What should the model avoid adding?&lt;/p&gt;

&lt;p&gt;That led me to build the &lt;a href="https://soutine.ai/seedance-prompts" rel="noopener noreferrer"&gt;Soutine Seedance Prompt Library&lt;/a&gt;, a small collection of 66 prompts with real clip previews. It is meant as a practical reference for studying shot language, not as a list of guaranteed formulas.&lt;/p&gt;

&lt;h2&gt;
  
  
  From idea to describable shot
&lt;/h2&gt;

&lt;p&gt;A usable video prompt usually gives the model a few connected pieces of information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Subject and action:&lt;/strong&gt; who or what is visible, and what happens during the shot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Camera movement:&lt;/strong&gt; whether the camera pans, tracks, pushes in, cranes, or stays locked off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timing or a mid-shot beat:&lt;/strong&gt; what changes after the opening moment, such as a subject turning, a light switching on, or an object entering frame.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aspect ratio and framing:&lt;/strong&gt; the intended shape and a useful description of the shot size.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Constraints:&lt;/strong&gt; details such as “no text,” “no logos,” or a clean, stable background when those matter.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These details do not remove the creative part. They make the creative intention easier to test. A prompt that names a camera move and a beat gives me something concrete to compare when I revise the clip.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preview, copy, adapt
&lt;/h2&gt;

&lt;p&gt;The workflow behind the collection is intentionally low-friction. I preview a clip, read the exact wording, copy it, and adapt one variable for the next iteration. If the camera motion works but the subject feels static, I change the action rather than replacing the entire prompt. If the action is good but the result becomes visually confusing, I add a clearer framing or a constraint.&lt;/p&gt;

&lt;p&gt;Small changes are useful because video generation has many moving parts. Changing camera movement, timing, subject behavior, and visual style simultaneously makes it hard to know what caused an improvement—or a failure. Keeping most of the prompt stable turns each attempt into a small experiment.&lt;/p&gt;

&lt;p&gt;The working collection is available at the &lt;a href="https://soutine.ai/seedance-prompts" rel="noopener noreferrer"&gt;Soutine Seedance Prompt Library&lt;/a&gt;, and the small companion reference package is &lt;a href="https://github.com/wayperlee/soutine-seedance-prompts" rel="noopener noreferrer"&gt;soutine-seedance-prompts on GitHub&lt;/a&gt;. Browsing and copying the examples is free. Creating new generations in Soutine consumes Soutine credits, so the library is best thought of as a reference and starting point rather than a promise of unlimited generation.&lt;/p&gt;

&lt;h2&gt;
  
  
  A prompt I would improve first
&lt;/h2&gt;

&lt;p&gt;Suppose a baseline says: “A paper boat floats through a rainy street.” I might revise it to: “A close tracking shot follows a paper boat drifting along a rain-filled street gutter; halfway through, it passes beneath a warm shop light; 16:9, gentle handheld motion, no text or logos.” The second version gives the shot a subject, action, camera behavior, timing beat, format, and constraint without dictating every pixel.&lt;/p&gt;

&lt;p&gt;If you have better ways to describe camera language, timing, or stable motion, I’d be glad to see those ideas applied to the collection. The most useful prompts are the ones that make the next experiment easier to understand.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>videography</category>
      <category>promptengineering</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I Built a Free Nano Banana Prompt Library With 1,400+ Copy-Ready Examples</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Thu, 01 Oct 2026 09:22:55 +0000</pubDate>
      <link>https://dev.to/leony/i-built-a-free-nano-banana-prompt-library-with-1400-copy-ready-examples-2g43</link>
      <guid>https://dev.to/leony/i-built-a-free-nano-banana-prompt-library-with-1400-copy-ready-examples-2g43</guid>
      <description>&lt;p&gt;I’m leony, an indie maker who likes turning repeated experiments into small, useful tools. One problem I kept running into with Nano Banana image generation was the blank prompt: I knew the kind of image I wanted, but not how to describe the subject, lighting, composition, and constraints in a way that gave me a useful starting point.&lt;/p&gt;

&lt;p&gt;So I built the &lt;a href="https://soutine.ai/banana-prompts" rel="noopener noreferrer"&gt;Soutine Nano Banana Prompt Library&lt;/a&gt;, a collection of more than 1,400 prompts with real generated previews. The goal is not to present one “magic prompt.” It is to make the relationship between exact wording and a visual result easier to inspect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why show the result beside the prompt?
&lt;/h2&gt;

&lt;p&gt;A prompt without an example is difficult to evaluate. A generated image without the prompt is difficult to reproduce. Putting them together makes the library more practical: you can look at the composition, notice the language used for the subject or materials, and then copy the complete prompt as a baseline for your own experiment.&lt;/p&gt;

&lt;p&gt;The collection is organized around common creative tasks rather than a single style. You’ll find examples for portraits, product shots, image restoration, anime, interior spaces, and surreal edits. That range matters because each category tends to need different kinds of detail. A portrait may depend on expression and lighting; a product shot may need surface descriptions and a controlled background; a restoration prompt may focus on preserving identity while repairing damage.&lt;/p&gt;

&lt;h2&gt;
  
  
  The browse  copy → try workflow
&lt;/h2&gt;

&lt;p&gt;My preferred workflow is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Browse a category that is close to the image I want.&lt;/li&gt;
&lt;li&gt;Compare the preview with the exact prompt that produced it.&lt;/li&gt;
&lt;li&gt;Copy the prompt and replace only the details that matter for my test.&lt;/li&gt;
&lt;li&gt;Run the new version, then make a small, deliberate change.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Browsing and copying the examples is free. If you use Soutine to generate new images, those generations use Soutine credits. I’m calling that out because a prompt library and an image-generation service are related, but they are not the same thing.&lt;/p&gt;

&lt;p&gt;The companion reference package is also available as &lt;a href="https://github.com/wayperlee/soutine-banana-prompts" rel="noopener noreferrer"&gt;soutine-banana-prompts on GitHub&lt;/a&gt;. It gives the collection a more inspectable home for people who prefer looking at a small source package alongside the live browsing experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  A small iteration habit
&lt;/h2&gt;

&lt;p&gt;When a prompt is almost right, I try not to rewrite everything at once. I change one variable at a time: the subject, then the lighting, then the composition, then a constraint such as background cleanliness or object count. For example, I might keep a product-shot prompt unchanged while moving from soft window light to a hard studio rim light. That makes the result easier to compare and helps reveal which words actually matter.&lt;/p&gt;

&lt;p&gt;If you experiment with Nano Banana, I hope the library helps you get past the blank page and into faster, more controlled iterations. I’m especially interested in seeing which prompt structures make your own results more repeatable.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>promptengineering</category>
      <category>webdev</category>
      <category>generativeai</category>
    </item>
  </channel>
</rss>
