Pellicule : marge de coupe plus large + warmup LiveView apres capture
La coupe physique du K60 n'est jamais parfaitement centree, donc une marge noire trop fine fait perdre la pellicule d'un cote du strip dedouble. Marge de coupe (perforations) elargie de 34 a 55px (~4.6mm) de chaque cote. Ajoute aussi un warmup LiveView (_chauffer_liveview) juste apres la remontee du miroir post-capture : consomme les ~1-2s de stabilisation pendant le spinner de traitement plutot que de laisser le preview du countdown suivant figé sur l'ancienne photo.
This commit is contained in:
@@ -172,6 +172,7 @@ class Camera:
|
||||
tmp_path = str(chemin_dest) + ".tmp"
|
||||
fichier_camera.save(tmp_path)
|
||||
self.activer_viewfinder() # Miroir relevé immédiatement après la prise
|
||||
self._chauffer_liveview() # Absorbe la stabilisation LiveView ici (spinner visible), pas sur le countdown suivant
|
||||
from PIL import ImageOps as PILImageOps
|
||||
img = PILImageOps.exif_transpose(PILImage.open(tmp_path))
|
||||
if img.width > 4000:
|
||||
@@ -189,6 +190,19 @@ class Camera:
|
||||
log.error(f"Erreur capture DSLR : {e}")
|
||||
return None
|
||||
|
||||
def _chauffer_liveview(self, tentatives: int = 8, pause: float = 0.15):
|
||||
"""Consomme les premieres frames LiveView juste apres la remontee du miroir
|
||||
(souvent en erreur ~1-2s le temps que l'AF/capteur se stabilise), pendant
|
||||
que le spinner de traitement est affiche — pour que le preview du prochain
|
||||
countdown soit deja a jour au lieu de rester figé sur l'ancienne photo."""
|
||||
for _ in range(tentatives):
|
||||
try:
|
||||
with self._gp_lock:
|
||||
self.camera.capture_preview()
|
||||
return
|
||||
except Exception:
|
||||
time.sleep(pause)
|
||||
|
||||
def _capture_webcam(self, chemin_dest: Path) -> Path | None:
|
||||
if not self.webcam or not self.webcam.isOpened():
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user