Remplacement d'écran de téléphone
Photo : $ARGUMENTS. S'il n'y en a pas, demandez-en une, ou trouvez-en avec find_photos.py.
Toute la face avant du téléphone est remplacée par du code : l'écran, le cadre noir, et l'encoche ou l'îlot. En dehors du verre, la photo est inchangée.
Pour un modèle qui existe déjà, cette compétence n'est pas nécessaire : python3 swap.py <image>.
Nouveau modèle
Prenez : une vraie photo d'un iPhone, l'écran face à l'appareil photo. Évitez : Android, une inclinaison supérieure à 25°, un côté plus de 1,2 fois l'autre (le recadrage les refuse). Évitez les photos avec un doigt ou une manche sur l'écran : sans cadre gris, ils seront repeints. Tout le verre nous appartient, même un reflet. Seule la peau qui vient de l'extérieur reste sur la photo.
P=<nom, 8 caractères, unique>; D=templates/corners
mkdir -p out
# 1. Regardez la photo et lisez les coins approximatifs de l'écran, TG,TD,BD,BG
python3 tools/slide_crop.py --q '<coins>' <photo.jpg> templates/crop/$P.jpg # imprime les coins sur le recadrage
# 2. Les bords droits exacts. Si `live` est bas : R=34
python3 tools/slide_lines.py $P '<coins sur le recadrage>' out/l.jpg # coins affinés à la fin de la sortie
# 3. Le contour : perspective, distorsion de lentille, rayon, contour du verre
python3 tools/slide_trace.py $P '<coins>' out/t.jpg $D/$P.json
# 4. Preuve de ce que l'ajustement n'a pas vu. Regardez toujours l'image
python3 tools/slide_proof.py $P $D/$P.json out/$P-proof.jpg
# 5. La pose, utilisée uniquement par le reflet
python3 tools/slide_sheet.py $P $D/$P.pose.json init
# 6. Mesurez l'encoche ou l'îlot, les icônes de statut, les noirs
python3 tools/slide_check.py $P measure
# Recette $D/$P.recipe.json : copiez a841f108 (encoche) ou f5dad639 (îlot), puis définissez frame=$P, pose, coins et les options mesurées
# 7. Heure et icônes à l'emplacement de ce téléphone
python3 tools/slide_status.py $P init <ligne de measure>; python3 tools/slide_status.py $P build
# 8. Construction et test rouge
python3 tools/slide_check.py $P build
# 9. Carte thermique des fuites
python3 tools/slide_check.py $P leak
# 10. Largeur du cadre
python3 tools/slide_check.py $P frame
Après cela, c'est un modèle : python3 swap.py <image> -t $P.
Vérifiez avant de faire confiance
out/$P-split.jpg: photo, rouge, résultat. Le rouge correspond, le cadre se termine au boîtier, tout ce qui vient du corps vers l'intérieur nous appartient.out/$P-leak.jpg: le cadre sur un écran noir, la luminosité en échelle logarithmique. Tout ce qui est éclairé provient de la photo : une ligne autour d'une découpe, des points, des reflets. Seul un haut-parleur et ce qui se trouve vraiment devant peuvent apparaître.out/$P-top.jpg: le contour vert de la découpe sur la photo, les icônes en place.out/$P-zoom.jpg: coins et cadre, agrandis, à côté de la photo.- Le modèle avec une image blanche via
swap.py: une page sombre cache les mauvais coins et bords. out/$P-frame.jpg: les quatre coins sur un écran blanc. Un modèle n'est pas terminé tant que la vérification du cadre ci-dessous n'est pas réussie.
Vérification du cadre
Le cadre noir est du matériel, une largeur uniforme tout autour. slide_check.py $P frame construit sur un écran blanc, le redresse et mesure le noir au milieu de chaque côté, en pixels d'écran (591 de large). Il imprime ours et photo par côté, l'écart et un verdict : jusqu'à 4 px c'est OK, plus c'est FIX.
La limite de 4 px est choisie d'après ces téléphones : un écart de 7,5 px était clairement visible, et 4 px ne l'était pas.
S'il dit FIX sur un nouveau modèle :
- Relancez
slide_trace.py: il lit le noir visible et donne à chaque côté la médiane (la ligneframe:). - Reconstruisez, puis relancez
frame. - Toujours
FIX: comparezoursavecphoto. S'ils correspondent, un reflet, un étui ou une main cache le cadre de ce côté sur la photo. Sinon, le contour est erroné : regardez-frame.jpget-split.jpg. - Si ça ne converge pas, ne déclarez pas le modèle terminé. Dites quel côté est décalé, et de combien de px.
Vérifiez aussi
-frame.jpgà l'œil : le haut et le côté doivent correspondre. Les modèles livrés :f38fe44a2.2,791866583.2 et895d3ee83.8 réussissent.f5dad6395.8,a841f1086.2 et14278a0b8.5 ne réussissent pas : leurs cadres ont été conservés tels que construits initialement.
Réglages
- Noir :
floor, pour que le cadre et la découpe correspondent à la photo. Commencez à.003et abaissez-le si la photo est plus sombre.buildimprime les deux. - Encoche : valeurs de
measure. Réglezcravec le contour vert,measurele lit bas. - Haut-parleur au-dessus d'une encoche :
grille=45. Si une fine ligne de l'ancienne page apparaît autour de l'encoche :gband=1. - Îlot : son centre est matériel, 295,5 sur 591. Si
measuredit plus de 1 px d'écart, quelque chose de brillant a mangé un bord : prenez le bord propre et reflétez-le par le centre. Sur un écran de verrouillage, prenezxd'un téléphone avec un îlot (heure 111, icônes 479) etydemeasure. - Haut-parleur au-dessus d'un îlot : s'il se trouve à l'intérieur du contour du verre,
grille=45ne ramène que son relief. - Manche sur le verre :
sleeve=1, uniquement avec un vrai cadre gris danstemplates/grey/(f38fe44a). - Sombre sur sombre :
slide_trace.pybascule automatiquement quand moins de 400 des 720 points montent. Vérifiez-splitavec une attention particulière.
Comment ça fonctionne
Un téléphone est rigide, donc l'écran est un rectangle avec les coins continus d'iOS, vu à travers une perspective et une distorsion de lentille radiale. Les bords sont trouvés dans la luminance logarithmique, donc le sombre sur sombre fonctionne, et placés au point médian en lumière linéaire. L'image est dessinée sur la photo redressée, puis courbée en arrière avec le verre.
Pièges connus
- Juger uniquement par une page sombre.
- Ajuster d'une manière et vérifier d'une autre : la vérification est l'ajustement, la preuve est ce qui a été laissé de côté.
- Lignes droites directement sur la photo : elle est courbée. Elles n'existent que sur l'image redressée.
- Chercher un bord de boîtier de l'extérieur vers l'intérieur sur un écran lumineux : un pli de tissu ressemble à un boîtier. Allez de l'écran vers l'extérieur.