1

Мой телефон Android способен делать какие-то "анимированные" изображения в формате JPEG, потому что я не мог использовать эту функцию надлежащим образом.

Теперь, когда я перенес свои фотографии по кабелю на рабочий стол, чтобы сэкономить место, как я могу увидеть их анимированными?

Они называются "MVIMG" и имеют метки времени. Если я открою их с помощью стандартного приложения Google Photo, они будут анимированы в цикле.

Есть ли какой-нибудь эквивалент в Windows? Я пробовал приложение «Фотографии» от Microsoft, но они все еще есть. На моем телефоне они двигаются

1 ответ1

2

Таким образом, очевидно, это пользовательский формат файла, состоящий из изображения JPEG и видео MP4.

Я нашел этот репозиторий GitHub, содержащий скрипт Bash для извлечения видео части файла.

Поскольку скрипт (Apache-2.0-licensed) довольно короткий и его легко понять, я процитирую его здесь:

#!/bin/bash

function extract {
  local file=$1

  local newFile=${file/[.]jpg/.mp4}

  if [[ -f "$newFile" ]]; then
    echo "File $newFile exists, so ignoring $file"
  else
    # find the offset of the string 'ftypmp42' in the file
    local lines=( $(grep --only-matching --byte-offset --binary --text ftypmp42  $file| cut -f 1 -d:) )

    # check that it was only found once in the file.. if not, well script probably needs improvement
    if (( ${#lines[@]} == 1 )) ; then
      # the mp4 begins 3 byte before the string 'ftypmp42'
      local offset=$(( ${lines[0]} - 3))

      # extract everything beginning at offset to another file
      tail -c +$offset $file > $newFile
    else
      echo "Not processing $file because the string 'ftypmp42' did not occur exactly once in file"
    fi
  fi
}

for f in "$@"; do
  if [[ "$f" == MVIMG*jpg ]]; then
    extract $f
  else
    echo "Ignoring $f because its file name does not match MVIMG*jpg pattern"
  fi
done

Чтобы запустить его, вам нужны bash , grep и tail , которые доступны практически в любом дистрибутиве Linux. Поскольку вы используете Windows 10, вы можете использовать WSL и Debian.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .