<?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: Eason</title>
    <description>The latest articles on DEV Community by Eason (@eason_zombiehug).</description>
    <link>https://dev.to/eason_zombiehug</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%2F4186053%2F3d47a6aa-fde6-4a0e-9b0a-c979866d55b0.png</url>
      <title>DEV Community: Eason</title>
      <link>https://dev.to/eason_zombiehug</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eason_zombiehug"/>
    <language>en</language>
    <item>
      <title>From Two Photos to a 15-Second Zombie Story: How an AI Photo-to-Video Pipeline Works (Halloween 2026 Creative Coding)</title>
      <dc:creator>Eason</dc:creator>
      <pubDate>Thu, 15 Oct 2026 06:32:59 +0000</pubDate>
      <link>https://dev.to/eason_zombiehug/from-two-photos-to-a-15-second-zombie-story-how-an-ai-photo-to-video-pipeline-works-halloween-3ofd</link>
      <guid>https://dev.to/eason_zombiehug/from-two-photos-to-a-15-second-zombie-story-how-an-ai-photo-to-video-pipeline-works-halloween-3ofd</guid>
      <description>&lt;h1&gt;
  
  
  From Two Photos to a 15-Second Zombie Story: How an AI Photo-to-Video Pipeline Works
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;By Eason&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every October someone in your group chat asks, "Can you make me into a zombie?" In 2026 the answer is less "open Photoshop" and more "run a pipeline." This autumn a short vertical format called the AI zombie trend (also called the zombie hug or zombie love story) spread on TikTok and Instagram Reels: one person has turned, the other recognizes them, lowers a prop rifle and opens their arms, and the clip hard-cuts to a warm memory of the two of them.&lt;/p&gt;

&lt;p&gt;I want to unpack how a product like that works under the hood. This is a concept tutorial, not a vendor-specific API guide, so you can map the stages onto whatever models you like for your own Halloween creative-coding project.&lt;/p&gt;

&lt;h2&gt;
  
  
  The shape of the problem
&lt;/h2&gt;

&lt;p&gt;Inputs: two still photos (person A, the one who turns; person B, the one who remembers).&lt;br&gt;
Output: a short vertical MP4 with sound, where both people stay recognizable across two very different scenes.&lt;/p&gt;

&lt;p&gt;That breaks into five stages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Input validation and preprocessing&lt;/li&gt;
&lt;li&gt;Identity representation&lt;/li&gt;
&lt;li&gt;Scene and story conditioning&lt;/li&gt;
&lt;li&gt;Image-to-video generation (with a mid-clip cut)&lt;/li&gt;
&lt;li&gt;Audio, encoding and delivery&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  1. Input validation and preprocessing
&lt;/h2&gt;

&lt;p&gt;Garbage in, garbage out applies doubly to generative video. Before anything expensive runs, a good pipeline checks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One person per photo.&lt;/strong&gt; A face detector counts faces; more than one is ambiguous ("which one turns?").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Face visibility and lighting.&lt;/strong&gt; Small, blurry or backlit faces lose identity fast once a model starts adding gore and grime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Format and size.&lt;/strong&gt; Normalizing HEIC/WebP/PNG to a common format and capping file size keeps the queue predictable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consent and policy.&lt;/strong&gt; Real products should refuse photos of children and celebrities. That is a product decision, but it belongs at the very front of the pipeline.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then you crop: a waist-up crop centered on the face gives the video model enough body to animate a run and a hug without losing the face.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Identity representation
&lt;/h2&gt;

&lt;p&gt;The hard part of any "make me into X" video is that X must still look like &lt;em&gt;you&lt;/em&gt;. Approaches you will see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reference-image conditioning.&lt;/strong&gt; The cropped photo is fed directly to an image-to-video model as the first frame or as a reference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identity embeddings.&lt;/strong&gt; A face-recognition encoder produces a vector that guides generation toward the same person.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two-subject handling.&lt;/strong&gt; With two people, you must keep identities from bleeding into each other. Mixed-up faces are the classic failure mode, which is why products that do this often offer a remake.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A useful trick: generate a stylized "zombified" keyframe of person A first (pale skin, torn clothes, clouded eyes) while keeping facial geometry, then animate from that keyframe.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Scene and story conditioning
&lt;/h2&gt;

&lt;p&gt;Users should not have to write prompts. Instead, the pipeline maps a few UI choices to a structured prompt template:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;relationship: couple | friends | family | dog | cat
scene_a: ruined city street at dusk
scene_b: golden wheat field, warm sunlight
beats: [recognize, lower_rifle, run, leap, cut_to_memory]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Seasonal variants are just new templates. A Halloween pumpkin patch that cuts to an autumn afternoon, or a candle-lit Día de Muertos alley that cuts to a field of marigolds, reuse the same beats with different scene descriptors. Encoding the &lt;em&gt;story&lt;/em&gt; as beats, not prose, makes results more consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Image-to-video with a hard cut
&lt;/h2&gt;

&lt;p&gt;Most current image-to-video models produce coherent clips of a few seconds. A 15-second story is easier as segments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Segment 1 (horror):&lt;/strong&gt; zombie A and survivor B in scene A, recognition and the run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Segment 2 (memory):&lt;/strong&gt; both as their normal selves in scene B.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The cut lands mid-leap. That edit is doing real work: it hides the seam between segments and it is the emotional payoff of the format. Generate each segment from its own keyframe, then concatenate. Output is 9:16 because that is where the content lives.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Audio, encoding and delivery
&lt;/h2&gt;

&lt;p&gt;Sound matters more than people expect. A low drone for the horror half and a softer track after the cut sells the twist. Mux it in, encode to H.264 MP4 at a mobile-friendly resolution like 720p, and you are done rendering.&lt;/p&gt;

&lt;p&gt;Generation takes minutes, not milliseconds, so treat it as an async job: put it on a queue, let the user close the tab, and email a private link when it is ready. Add retention rules (delete source photos after a few days, videos after a few weeks) so you are not hoarding people's faces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build it or use it?
&lt;/h2&gt;

&lt;p&gt;If you want to learn, wiring this up yourself is a great Halloween weekend project. Start with a single subject and a single segment, then add the second person and the cut.&lt;/p&gt;

&lt;p&gt;If you just want the clip for your feed, a finished tool saves you the GPU bill. For reference, &lt;a href="https://aizombietrend.com" rel="noopener noreferrer"&gt;Zombie Hug&lt;/a&gt; packages exactly this flow: upload two photos, pick who is in the video and a scene, and get a 15-second 9:16 720p MP4 with sound by email, usually in 5 to 10 minutes. It is paid per video, which is a fair trade against debugging identity bleed at 2 a.m.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Validate and crop inputs aggressively; it is the cheapest quality win.&lt;/li&gt;
&lt;li&gt;Preserve identity with reference conditioning, and watch for two-face mixups.&lt;/li&gt;
&lt;li&gt;Encode stories as beats, not freeform prompts.&lt;/li&gt;
&lt;li&gt;Use the hard cut to hide segment seams and land the emotion.&lt;/li&gt;
&lt;li&gt;Run generation as an async job with privacy-minded retention.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Happy haunting, and may your faces never bleed into each other.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>video</category>
      <category>halloween</category>
      <category>creativecoding</category>
    </item>
  </channel>
</rss>
