0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows11でHEIC画像からスライドショー動画を作る

Posted at

目的

Windows11でHEIC画像からスライドショー動画を作る

背景

iPhoneで撮った写真HEICファイル(iOSデバイスのデフォルトの画像形式)をWindows11で受け取ることがある。Windows11でHEIC画像からスライドショー動画を作ろうと思ったら色々苦労したのでメモする。

  • Windows11で、HEICファイルをフォトアプリで読み込めたが、スライドショー動画はエラーで作られなかった
  • Windows11で、HEICファイルに対応している無料アプリが見つからない
  • Windows11で、HEICファイルに対応していそうな無料アプリでも、画像の一部分しか読み込まないことがある
    • shotcut version24.11.17 要望がcloseされていないので、まだ未対応かも

概要

私の知るところでは、Windows11でHEICファイルからスライドショー動画を作られる無料アプリが見つからなかった。
JPEGからは作られるので、HEICからJPEGを作る以下の二つの方法を紹介する。

  1. ImageMagickでHEICをJPEGに変換してから、スライドショー動画作成アプリで使う
  2. PythonライブラリimagecodecsでHEICをJPEGに変換してから、スライドショー動画作成アプリで使う

JPEGであれば、どんなスライドショー動画作成アプリでも良いと思うが、今回はshotcutを使う。
※HEICからJPEGを作るとビットの深さが落ちて画像は劣化する
※imagecodecsではEXIF情報をコピーしていないので情報が空欄になる
左:HEIC、中:ImageMagickデフォルト変換JPEG、右:imagecodecsデフォルト変換JPEG
image.png
サイズは、ImageMagicだと2倍ほどに増えて、imagecodecsだと1割ほど減っていた
image.png

1. ImageMagickでHEICをJPEGに変換する手順

セットアップ前環境

セットアップ

  • Windowsキーを押す
  • 検索ボックスに「cmd」と入力
  • Ctrl + Shift + Enterを押す(管理者として実行)
  • 以下のコマンドを実行する(途中選択肢が出る場合は、A + Enterする)
cmd.exe(管理者として実行)
choco upgrade chocolatey
choco install imagemagick
choco install shotcut

セットアップ後環境

使い方

以下のコマンドで、カレントフォルダのheicファイルからjpgファイルを生成する

cmd.exe
magick mogrify -format jpg *.heic

生成したjpgファイルを使って、以下の記事を参考にスライドショー動画を作成する
Shotcutで画像スライドショー動画(BGM付き)を作成

2. PythonライブラリimagecodecsでHEICをJPEGに変換する手順

セットアップ前環境

セットアップ

  • Windowsキーを押す
  • 検索ボックスに「cmd」と入力
  • Ctrl + Shift + Enterを押す(管理者として実行)
  • 以下のコマンドを実行する(途中選択肢が出る場合は、A + Enterする)
cmd.exe(管理者として実行)
choco upgrade chocolatey
choco install python
choco install pycharm-community
choco install visualstudio2022buildtools
choco install visualstudio2022-workload-vctools
choco install shotcut

GitHub vcpkgから、zipをダウンロードして展開する
image.png
またはクローンする

cmd.exe
git clone https://github.com/Microsoft/vcpkg.git

展開フォルダでコマンドプロンプトを開き、以下のコマンドを入力する

cmd.exe
.\bootstrap-vcpkg.bat
.\vcpkg integrate install
.\vcpkg install libde265:x64-windows
.\vcpkg install x265:x64-windows
.\vcpkg install libheif:x64-windows
pip install pillow
pip install pyheif

ここで以下のエラーが出るなら、chocolatyでvisualstudio2022buildtoolsがきちんと入ってないかもしれない
image.png
以下のパスにあるインストーラーを起動してインストール済みか確認する

C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe

以下はインストール済みの状態。インストール済みになっていない場合は、 この記事「「Microsoft Visual C++ 14.0 or greater is required.」が出た場合の対処方法」を参考にインストールする
image.png

インポートに成功するが、実行時に以下のエラーがでる
image.png
_libheif_cffiは存在するように見える?(Python仮想環境管理のパスが.venv2の場合)
image.png

vcpkgでビルドされて、以下のファイルが配置されているので

D:\git\vcpkg\packages\libheif_x64-windows\bin\heif.dll
D:\git\vcpkg\packages\libheif_x64-windows\lib\heif.lib
D:\git\vcpkg\packages\libheif_x64-windows\include\libheif\heif.h
D:\git\vcpkg\packages\libheif_x64-windows\include\libheif\heif_cxx.h
D:\git\vcpkg\packages\libheif_x64-windows\include\libheif\heif_items.h
D:\git\vcpkg\packages\libheif_x64-windows\include\libheif\heif_plugin.h
D:\git\vcpkg\packages\libheif_x64-windows\include\libheif\heif_properties.h
D:\git\vcpkg\packages\libheif_x64-windows\include\libheif\heif_regions.h
D:\git\vcpkg\packages\libheif_x64-windows\include\libheif\heif_version.h

D:\git\vcpkg\packages\libde265_x64-windows\bin\libde265.dll
D:\git\vcpkg\packages\libde265_x64-windows\lib\de265.lib
D:\git\vcpkg\packages\libde265_x64-windows\include\libde265\de265.h
D:\git\vcpkg\packages\libde265_x64-windows\include\libde265\de265-version.h
D:\git\vcpkg\packages\libde265_x64-windows\include\libde265\en265.h

D:\git\vcpkg\packages\x265_x64-windows\bin\libx265.dll
D:\git\vcpkg\packages\x265_x64-windows\lib\libx265.lib
D:\git\vcpkg\packages\x265_x64-windows\include\x265.h
D:\git\vcpkg\packages\x265_x64-windows\include\x265_config.h

以下に従い

以下のdllだけ.venv2/Scripts以下に配置した(Python仮想環境管理のパスが.venv2の場合)

D:\git\vcpkg\packages\libheif_x64-windows\bin\heif.dll
D:\git\vcpkg\packages\libde265_x64-windows\bin\libde265.dll
D:\git\vcpkg\packages\x265_x64-windows\bin\libx265.dll

すると、以下のエラーに変わったので

  • ImportError: No module named _cffi_backend

以下に従い

cffiを入れなおした

cmd.exe
pip uninstall cffi
pip install cffi

動き出したが、以下のエラーになった

変換エラー: struct heif_decoding_options: wrong total size (cdef says 72, but C compiler says 80). fix it or use "...;" as the last field in the cdef for struct heif_decoding_options to make it flexible: C:\Users\igapon\Downloads\1229\025.heic

以下と同じ状況のようだ、回避策が提案されているが、ここまでにして、imagecodecsを使うことにする

以下を実行する

cmd.exe
pip install imagecodecs

セットアップ後環境

使い方

GitHubを、HEICファイルがあるフォルダにダウンロードして以下を実行する

cmd.exe
python heic2jpg.py

HEICファイルがあるフォルダを引数で指定する場合は以下の通り実行する

cmd.exe
python heic2jpg.py -p "C:\Users\igapon\Downloads\1229\heic"

生成したjpgファイルを使って、以下の記事を参考にスライドショー動画を作成する
Shotcutで画像スライドショー動画(BGM付き)を作成

おわりに

PythonにHEIC向けライブラリがあるので、Windows11でも簡単に対応できると思って取り組み始めたが、とても苦戦した。現時点ではImageMagickを使うのが楽だと思う。

関連リンク

参考サイト

関連GitHub

ドキュメント

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?