那张躺在桌面上的旧照片,终于重新笑了起来

2026-08-08 · 约 14 分钟

今天首页更新的起点,不是一张干净的扫描件。

它是一张用手机匆忙拍下来的纸质旧照。照片平放在木纹桌面上,上方露着床单,玻璃反光压在右下角,相纸白边有些歪。照片里,一位年轻母亲抱着孩子;那个孩子,就是今天重新上传这张照片的人。

我们一开始只想把首页的“老照片修复”入口补回来。真正动手以后才发现,要让普通人愿意用,它不能只会接收一张已经裁好、摆正、清晰的数字照片。多数人的回忆,本来就躺在相册里、抽屉里,甚至像这一张一样,躺在桌面上。

MV Studio Pro首页照片工具,包含老照片修复上色、2倍与4倍高清放大和照片人物动画
今天上线的首页照片工具:上传一次,修复、放大和人物动画可以接着做。点击截图即可前往。

想直接试,不必读完全文:

手机拍摄的纸质旧照片原图,周围仍有桌面、床单、白边和反光
最初上传的原图:1024×1820。真正的照片只占画面中间一部分。

第一步,不是上色,而是先把相纸从桌面上“拿起来”

让用户自己拖四个裁切点,当然最省开发时间。但这等于把我们的麻烦推给用户:老人不会裁,手机上不好裁,裁歪一点还得重来。

所以新链路先做边界识别。幕后使用视觉模型只回答一件事:纸质照片的有效影像从哪里开始、到哪里结束。它不看人物是谁,也不负责重绘,只返回一组归一化坐标和置信度。服务端再按真实像素裁掉桌面、床单、白边、手指和阴影;真正的修复上色随后才交给 GPT Image 2。

这一步还加了一道很朴素的保险:置信度不足时不乱裁,直接回到原图继续处理。自动化的意义是少给用户添麻烦,不是自信满满地切掉半张脸。

从手机翻拍画面中裁出的纸质旧照片有效影像区域
为了展示边界目标而单独裁出的有效影像;生产链由视觉模型返回坐标,再执行像素裁切。

上传也没有改成看似方便、实际笨重的浏览器 Base64。图片仍然从浏览器直传 GCS,业务请求只携带 GCS 地址;服务端需要调用模型时再读取图片。到了4K,一张图就是8MB左右,这个区别会直接决定请求是顺畅,还是在网关里堵成一团。

第一次上色,我们没有收货

第一版修复其实不算失败。划痕淡了,人物清楚了,肤色也回来了。但整张图仍像罩着一层旧相册的黄雾:颜色太客气,白边也还在。它像一张被认真保存的档案,却不像一段刚刚发生过的生活。

第一次老照片修复上色结果,颜色较淡并保留相纸边缘
第一次上色:修复有效,但颜色偏淡,离“重新活起来”还有一点距离。

于是提示词重新收紧:人物身份、脸型、五官、年龄、表情、姿势和服装轮廓都不能动;允许恢复的,是皮肤、毛衣、书架、皮包和室内光线原本可能拥有的颜色。我们要的是鲜活,不是艳丽;是现代照片的通透感,不是把旧照片变成影楼样片。

第二次出来时,粉色毛衣、米黄色童装、木柜和书脊终于各自有了温度。更重要的是,画面里的人仍然能被认出来。

颜色更鲜活自然的老照片修复上色结果
重新调整修复指令后的版本:1536×1024,颜色更明亮,但没有故意做成高饱和滤镜。

2K很快,4K也真的不是把数字写大

修复完成后,这张图会自动成为下一步素材,不用下载、重新上传、再找一遍文件。首页的2倍和4倍放大,也不再共用同一个模型然后换一行文案。

2倍走速度更快的 gemini-3.1-flash-image。这次实跑约19.6秒,输出 2528×1696。发丝、衣料和书架边缘更干净,适合手机保存、社交平台分享和普通尺寸冲印。

老照片经过2倍高清放大后的2K结果
2×高清放大:2528×1696,约19.6秒完成。点击可查看大图。

4倍则换成面向4K输出的 gemini-3-pro-image。这次实跑约40.1秒,输出 5056×3392。它没有把2K文件机械拉伸一遍,而是重新检查细节,同时被要求锁住构图、人物身份、表情、色彩和光线,不许借“增强”之名偷偷换脸。模型名留在幕后,用户在页面上只需要选择2×或4×。

老照片经过4倍高清放大后的4K结果
4×高清放大:5056×3392,约40.1秒完成。页面使用高质量压缩,像素尺寸保持不变。

两档模型不同,但对外仍是一件简单的事:2×扣15积分,4×扣35积分。系统会先检查原图清晰度;如果源图已经糊到没有真实细节,会明确提醒放大可能产生推测纹理。用户仍然可以继续,只是这笔选择要在生成前说清楚。

然后,照片里的人动了起来

第一段视频使用首页照片动画当前接入的 HappyHorse 1.1。提示词没有让人物突然站起来,也没有安排夸张运镜,只让母亲低头看孩子、调整抱姿,再露出自然的笑;孩子眨眼、转头,小手轻轻动一下。

开头还是一张照片。两秒以后,母亲垂下眼睛;再往后,孩子抬头,窗边的光落到脸上。到最后一秒,她真的笑了。

HappyHorse 1.1:720p档,实际1176×784、5.16秒;真实调用费用 $0.494。

为了不拿一次结果就下结论,我们又把同一张4K图片交给 MiniMax H3。提示词只做了小幅调整:母亲先低头看孩子,再抬眼微笑;孩子眨眼、转头并抬起小手;镜头缓慢推近,暖光一点点亮起来。人物、服装、书架和手提包都要求留在原位。

MiniMax H3 对照版:实际2144×1440、5.17秒;生成耗时258秒,真实调用费用 $0.65。

这条H3只跑5秒,是为了控制本次文章对比的实验成本。产品里的H3成片档仍固定15秒出售:测试探针和正式商品不是一回事,不能因为一次短测就把商业规则悄悄改掉。

同一张照片,两种成片方式值不值

HappyHorse 1.1 MiniMax H3
输入 同一张4K修复照 同一张4K修复照
输出尺寸 1176×784 2144×1440
实际时长 5.16秒 5.17秒
真实费用 $0.494 $0.65
折合每秒 $0.0988 $0.13
按相同单价估算15秒 $1.482 $1.95

H3贵了约31.6%,但交付像素约为HappyHorse 1.1的3.35倍。画面上,它对第一帧的承接更稳:书架、手提包和墙面基本没有乱跑,孩子转身看向母亲时,母亲的脸也没有突然换成另一个人。动作较克制,更像旧家庭录像被轻轻续上了五秒。

HappyHorse 1.1的优势是变化更大胆。母亲和孩子的互动幅度更大,窗边阳光也更有戏;代价是后半段脸部、抱姿和室内光线发生了更明显的漂移。它更像一段根据照片重新拍摄的短片,而H3更像原照片本身开始移动。

两条提示词并非逐字相同:H3版多写了低头、抬眼、暖光和缓慢推近,因此这不是实验室式的严格A/B。它回答的是更实际的问题——同一张4K旧照,分别给两种模型一次机会,各自能把这五秒带到哪里。

这里没有“谁全面碾压谁”的结论。照片动画最怕的不是分辨率少几百像素,而是五秒以后,人已经不像原来的人。我们实际检查的是:第一帧能不能接住4K原图,人物转头时五官会不会漂,手部动作会不会长出多余结构,背景会不会突然换房间,以及最后一帧还能不能认出照片里的人。

首页真正更新的,不只是三个按钮

这一晚改得最多的其实不是文案,而是接线。

从首页上传开始,原图直传GCS;老照片修复会先尝试识别相纸边界,再调用修复上色模型;修复结果自动成为2K或4K放大的输入;高清图又能直接成为视频首帧。每一步的结果都会写进“我的作品”,刷新页面以后仍然找得到。

计费也放在服务端重算,而不是相信浏览器传来的数字:老照片修复10积分,2×放大15积分,4×放大35积分;首页动画按时长与清晰度计算。外部模型失败时,已扣积分走退款路径。页面上看到价格、接口实际扣费、作品记录里的积分,必须是同一笔数。

这听起来没有“一个模型让旧照片复活”那么浪漫,却决定了这个功能到底是能用,还是只有一排漂亮按钮。真正的产品不是弹出一个成功提示,而是照片确实被裁好、颜色确实回来、4K文件确实落盘、视频确实能播放,失败以后钱也确实回去。

年轻的时光,没有回来,只是醒了一小会儿

技术当然不能让任何人回到照片拍下的那一天。

它只能把桌面和白边移开,把褪去的颜色一点点找回来,把模糊的轮廓放大,再给静止的人五秒钟:低头,看一眼怀里的孩子;孩子动动小手;然后,两个人一起留在窗边的暖光里。

但对一张沉睡了很多年的照片来说,五秒已经很长了。

那一刻,被唤醒的不只是像素。是照片里年轻的母亲,是还不会说话的孩子,也是隔着很多年回头看他们的那个人。

如果你手里也有一张舍不得丢、却一直没来得及整理的旧照片,现在可以从首页开始:先去修复上色,接着做2×或4×高清放大,最后写一句动作,让照片里的人重新动起来。不需要手动裁相框,也不用在三个页面之间反复上传。

让回忆重新穿越,也让年轻的时光,再醒一次。