Compare commits

..

2 Commits

Author SHA1 Message Date
62388eb555 Fix preview images that need rotation 2023-11-18 12:04:35 -08:00
53778543bf Remove debug 2023-11-18 11:47:01 -08:00
2 changed files with 13 additions and 2 deletions

View File

@ -6,6 +6,7 @@ from urllib.parse import unquote
from PIL import Image
from sanic import Blueprint, raw
from sanic.exceptions import Forbidden, NotFound
from sanic.log import logger
from cista import config
from cista.util.filename import sanitize
@ -16,7 +17,7 @@ bp = Blueprint("preview", url_prefix="/preview")
@bp.get("/<path:path>")
async def preview(req, path):
"""Preview a file"""
width = int(req.query_string) if req.query_string else 768
width = int(req.query_string) if req.query_string else 1024
rel = PurePosixPath(sanitize(unquote(path)))
path = config.config.path / rel
if not path.is_file():
@ -34,6 +35,17 @@ def process_image(path, maxsize):
img = Image.open(path)
w, h = img.size
img.thumbnail((min(w, maxsize), min(h, maxsize)))
# Fix rotation based on EXIF data
try:
rotate_values = {3: 180, 6: 270, 8: 90}
exif = img._getexif()
if exif:
orientation = exif.get(274)
if orientation in rotate_values:
logger.debug(f"Rotating preview {path} by {rotate_values[orientation]}")
img = img.rotate(rotate_values[orientation], expand=True)
except Exception as e:
logger.error(f"Error rotating preview image: {e}")
# Save as webp
imgdata = io.BytesIO()
img.save(imgdata, format="webp", quality=70, method=6)

View File

@ -4,7 +4,6 @@
@contextmenu.stop
@focus.stop="store.cursor = doc.key"
@click="ev => {
console.log('Gallery click', doc.key, store.cursor, !!media)
if (m!.play()) ev.preventDefault()
store.cursor = doc.key
}"