immich-app / immich

High performance self-hosted photo and video management solution.
https://immich.app
GNU Affero General Public License v3.0
43.6k stars 2.13k forks source link

Zoom snapping on image load in mobile app #8545

Open Seon82 opened 5 months ago

Seon82 commented 5 months ago

The bug

In the mobile app, if you zoom in on a lower-res preview of an image, the view snaps to another region of the image when the full-scale image loads.

I assume the transformation would need to be recalculated to account for the new image dimensions.

The bug is demonstrated below, with the snapping happening at 0:05.

https://github.com/immich-app/immich/assets/46298009/80b1fe77-254a-4efe-bb96-959814eca323

The OS that Immich Server is running on

Debian 12

Version of Immich Server

v1.101.0

Version of Immich Mobile App

v.1.101.0 build.131, on android

Platform with the issue

Your docker-compose.yml content

#
# WARNING: Make sure to use the docker-compose.yml of the current release:
#
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
#
# The compose file on main may not be compatible with the latest release.
#

name: immich

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    command: ['start.sh', 'immich']
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
#    ports:
#      - 2283:3001
    depends_on:
      - redis
      - database
    restart: unless-stopped
    networks:
      - caddy_net
      - default

  immich-microservices:
    container_name: immich_microservices
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding
      file: hwaccel.transcoding.yml
      service: quicksync # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
    command: ['start.sh', 'microservices']
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    depends_on:
      - redis
      - database
    restart: always

  immich-machine-learning:
    container_name: immich_machine_learning
    # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
    # Example tag: ${IMMICH_VERSION:-release}-cuda
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
     file: hwaccel.ml.yml
     service: openvino # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always

  redis:
    container_name: immich_redis
    image: registry.hub.docker.com/library/redis:6.2-alpine@sha256:51d6c56749a4243096327e3fb964a48ed92254357108449cb6e23999c37773c5
    restart: always

  database:
    container_name: immich_postgres
    image: registry.hub.docker.com/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: always

volumes:
  pgdata:
  model-cache:

networks:
  caddy_net:
    name: caddy_net
    external: true

Your .env content

# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables

# The location where your uploaded files are stored
UPLOAD_LOCATION=./library

# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=v1.101.0

# Connection secret for postgres. You should change it to a random password
DB_PASSWORD=[redacted]

# The values below this line do not need to be changed
###################################################################################
DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

REDIS_HOSTNAME=immich_redis

Reproduction steps

1. Open the mobile app
2. Open an image from an album
3. Zoom on the image before the full-size image loads
4. The view "jumps", gets offset when the full-size image gets loaded

Additional information

No response

aviv926 commented 5 months ago

I can't reproduce this problem, can you specify which phone you are using? Are you experiencing this on other devices?

Seon82 commented 5 months ago

I have been able to reproduce the issue on a Samsung A54, Samsung A51, and Samsung Galaxy S7 Edge. Additionally, I've verified that the problem persists when connecting the app to the demo immich instance.

aviv926 commented 5 months ago

I have been able to reproduce the issue on a Samsung A54, Samsung A51, and Samsung Galaxy S7 Edge. Additionally, I've verified that the problem persists when connecting the app to the demo immich instance.

In fact, I connected to the demo as well, went into the album and then the photo and did not experience this problem. I also use Samsung. Have you changed any app settings?

Seon82 commented 5 months ago

That's weird - I can reproduce the issue with default settings.

bo0tzz commented 5 months ago

I just managed to reproduce this as well.

fabianbees commented 4 months ago

Additionally I can also observe a second snapping, when the "load originals" option in the asset viewer settings is enabled.

In this case the first snapping occurs when the large preview was loaded and the second snap when the full resolution image was loaded.

ZtereoHYPE commented 3 weeks ago

I can reproduce on both an iPad air 4th generation on iOS 17 and on a Google Pixel 8 on android 14. Immich v1.111.0