WebP⇔[PNG, JPEG]変換方法

WebPとはGoogleが開発した静止画フォーマットです。URLは下記です。

https://developers.google.com/speed/webp

WebPへ変換してくれるWebサービスサイトなどありますが WebP Converterが公式サイトからダウンロードできますのでそのアプリを利用したほうがいいかと思います。

macOSの場合 WebP Converterインストール

macOS用のパッケージ管理ツールhomebrewを使えば下記コマンドで簡単にインストールできます。

brew install webp

cwebp, cwebpがインストールされていると思いますので確認します。

cwebp -version
dwebp -version

cwebpコマンドを使ってwebpファイルに変換する。

cwebp 202007131405.png -o 202007131405.webp

上のような感じで変換できました。

WebPファイルを他のフォーマットへ変換する場合「dwebp」コマンドを使います。

dwebp 202007131410.webp -o test.png 

PNGフォーマットファイルに変換されます。

Windows版のWebP Converterインストール方法

https://developers.google.com/speed/webp

WebP公式サイトから[WebP Converter Download]項目まで下にスクロールする。

Convert your favorite collection from PNG and JPEG to WebP by downloading the precompiled cwebp conversion tool for Linux, Windows or Mac OS X.

と書いているとことにリンクがあるのでクリックします。

さらに、[downloads repository.]と書いている項目をクリックするとバイナリ一覧が出てきます。

上記あたりをZIPファイルをダウンロードし解凍すればbinフォルダー内に[cwebp.exe, dwebp.exe]が入っています。

macOSで実行したコマンドでWebPに変換できます。

cwebp.exe 202007131410.png -o 202007131410.webp  

WebPファイルからPNGファイルに変換

dwebp.exe 202007131410.webp -o test.png

macOS 画面動画Gif変換

macOSのショートカットを使えばスクリーンショットや画面を動画として収録できます。

画面全体のスクリーンショットの場合キーボードの[ ⌘ + シフト + 3 ]

範囲指定画面スクリーンショットの場合キーボードの[⌘ + シフト 4]

mac画面の動画を収録する場合キーボードの[⌘ + シフト + 5]

キーボードの[⌘ + シフト + 5]を同時に押すとスクリーン下部に下のような画面が表示されいます。

画面全体を指定するとmacのスクリーン全体が収録されいます。範囲指定を選択するとスクリーンに範囲を選択できる枠が表示されますのでマウスを使って調整します。

画面指定したあと、スクリーン下の[収録]をクリックするとスクリーン範囲指定した動画収録できます。

画面収録中は、下のようなスクリーン上のメニューバーに(■)ボタンが出ています。収録を終了したい場合はその(■)をクリックします。

収録した動画はデスクトップに保存されています。「画面収録 yyyy-mm-dd hh.mm.ss.mov」

動画ファイルを動画GIFに変換します。

Mac App Storeに「Gifted」というアプリがあるので下記URLからインストールします。

https://apps.apple.com/jp/app/gifted/id771955779?mt=12

Giftedをクリックすると下のような画面で出てきますので 作成した画面収録動画ファイルをドロップします。

動画ファイルをドロップできたら[Start]をクリックします。

動画GIF変換が完了すると「 /Users/ユーザー名/Pictures/Gifted 」の中に出力された動画GIFが入っています。

Swift 配列と辞書【Array | Dictionary】

swift array2

Swiftで変数を配列としてもたせる場合は下記のように記述することができてとてもシンプルです。

var array1= [1,2,3]
var str_array1= ["あ","い","う"]

数値や文字列を自動で判断するようですので、型を気にする必要はありません。数値と文字列を混ぜる場合 as [Any]をつけて対応することもできます。

var array1 = [1,"い","う"] as [Any]

上記のような場合、型はどうなっているのか確認したいので、下記のように記述し型を取得します

var array1 = [1,2,3]
print(type(of: array1))
var str_array1 = [1,"い","う"] as [Any]
print(type(of: str_array1))

実行すると 数値だけの型はArray<Int>で、数値と文字列が混ざっている場合Array<Any>になっていました。

Array<Any>だと何でも入るのですが文字列かどうかを判断する必要があります。

let ar1:Array<Any>  = [1, "文字列", Button("Button1",action: {})]
print(ar1.count)
print("ar1[1] = " + (ar1[1] as! String))

上の例は、配列の1番目を取得したので文字列にキャストしています。

配列の追加・削除【append】

配列に追加・削除したい場合下記のように記述できます

var array1 = [1,2,3]
array1.append(4) //追加
array1.remove(at: 0) //0番目削除

配列に4を追加して 配列の0番目を削除しています。

mapを使って配列の値を一括に処理したい場合

var array1 = [1,2,3]
let array2 = array1.map {
    $0 + 2
}

mapを使って、[1,2,3]それぞれに+2したarray2を作成しました。array2 = [3,4,5]になります。

swift array2

配列内を一つづつ取得し処理したい場合【for】

配列を繰り返し処理したい場合、for inforEachが使えます。

var array1 = [1,2,3]

let array2 = array1.map {
	$0 + 2
}

array1.append(4)
array1.remove(at: 0)

array1.forEach{ i -> Void in
	print("array1 = \(i)")
}
for i in array2{
	print("array2 = \(i)")
}

辞書 【Dictionary】 を使う

DictionaryはKey, Valueがセットになっていて Keyで指定したValueが取得できます。PHPなどの連想配列のようなイメージでしょうか

var dic1 = [1:"a", 2:"b", 3:"c"]

上記のように値をセットするとDictionary<Int,String>と自動的に判断します。

var dic1 = [1:"a", 2:"b", 3:"c"]
dic1[1] = "abc"  //値を変更
dic1[100] = "百" //新たにキーと値を追加

値を指定して代入や新たにKeyとValueを追加することもできます。

DictionaryでforEachを使う場合

var dic1 = [1:"a", 2:"b", 3:"c"]
dic1.forEach{(k,v) -> Void in
	print("key = \(k), value=\(v)")
}