2021年8月22日日曜日

ZIPで圧縮した画像をZIPで圧縮したまま、画像のリサイズするスクリプトを書きました

みなさん、お久しぶりです。白虎21です。

皆さんは「P1×1v Faиb0×」や「Faиt1a」、「Patre0и」などをご活用されていますでしょうか?

絵師さんをサポートしている場合、画像を見返りとして受け取ることが多いかと思います。

その場合、 画像をZIPで圧縮されたデータとして受け取ることがあるかと思います。

その圧縮されたデータをスマホで見ることがあるかと思いますが、画像サイズが大きくて読み込みに時間がかかったりすることがあるのではないかと思います。

そもそもにスマホでは画素数が多すぎても意味がないと思うところがあります。

そのため、ZIPで圧縮された画像を新たなファイルなどを生成することなく、画像のリサイズを行うことができるスクリプトを書きました。

https://github.com/WhiteTiger-21/python_resize_zip_images

このサイトの「zip.py」が上記の内容が可能なスクリプトです。

他のファイルは開発段階の副産物です。

 

利用方法は該当のZipファイルが存在するところでPowerShellやターミナルを開いて、pythonを実行できる状態にしてください。

そして、次のようなコマンドを入力します。

python zip.py 「任意のファイル」

 

具体例として、「Sample.zip」のイメージをリサイズしたい場合は、次のようになります。

python zip.py Sample.zip


ただし、このスクリプトが利用するにはいくつかの条件があります。

  1. 第一に実行環境である「python」と開発するにあたって使用したパッケージファイルが入っていること。
    pythonが入っていなければ、pythonをインストールする必要がありますが、ただ単にこのスクリプトをダウンロードして、実行したいだけであれば、マイクロソフトの「ストア」アプリから「python」をダウンロードしてください。
    マイクロソフトストアのPythonのダウンロードサイト

  2. MITライセンスに同意する。
    端的に言うと何が起こっても一切の責任を負いません。
    必ずバックアップを取ってください。
    そもそもスマホ向けに画像を圧縮するようなツールなので、劣化なしの元のデータをしっかり取っておいてください。

  3. gifファイルが含まれていないこと。
    gifファイルは連番によりアニメーションのようになっているものがあります。
    それに対する対処を行っていないためです。

  4. ディレクトリが入れ子構造になっていないこと
    具体的には以下のようなディレクトリ構造となっていることが好ましいです。
        
    Sample
    |-- 01.png
    |-- 02.png
    |-- 03.png
    |-- 04.png
    |-- 05.png
    |-- 06.png
    |-- 07.png
    |-- 08.png
    `-- 09.png
     
    入れ子であったとしても、二分木などではなく、完全なる入れ子、マトリョーシカ状態になっていれば、一番階層の深いところから、一番上に来るだけです。

    具体例として問題のない例は、以下のように、完全なマトリョーシカ状態。

    他、二分木の状態になっていても、ファイル名が異なる状態。
    Sample
    |-- 01.png
    |-- 02.png
    |-- 03.png
    |-- 04.png
    |-- 05.png
    |-- 06.png
    |-- 07.png
    |-- 08.png
    |-- 09.png
    `-- Inside01
        |-- INSIDE_01.png
        |-- INSIDE_02.png
        |-- INSIDE_03.png
        |-- INSIDE_04.png
        |-- INSIDE_05.png
        |-- INSIDE_06.png
        |-- INSIDE_07.png
        |-- INSIDE_08.png
        `-- INSIDE_09.png
     
    上記の2つ所状態に値するものは問題ありません。
    しかし、以下のように、二分木状態であり、なおかつ、ファイル名が同じ場合、ファイルの上書きがされ、Inside03の中身のみが残ります。
        
    Sample
    |-- 01.png
    |-- 02.png
    |-- 03.png
    |-- 04.png
    |-- 05.png
    |-- 06.png
    |-- 07.png
    |-- 08.png
    |-- 09.png
    |-- Inside01
    |   |-- 01.png
    |   |-- 02.png
    |   |-- 03.png
    |   |-- 04.png
    |   |-- 05.png
    |   |-- 06.png
    |   |-- 07.png
    |   |-- 08.png
    |   `-- 09.png
    |-- Inside02
    |   |-- 01.png
    |   |-- 02.png
    |   |-- 03.png
    |   |-- 04.png
    |   |-- 05.png
    |   |-- 06.png
    |   |-- 07.png
    |   |-- 08.png
    |   `-- 09.png
    `-- Inside03
        |-- 01.png
        |-- 02.png
        |-- 03.png
        |-- 04.png
        |-- 05.png
        |-- 06.png
        |-- 07.png
        |-- 08.png
        `-- 09.png
    
    
  5.  

以上が利用するにあたっての利用条件です。

 

今回の記事は以上となります。

皆さんのお役に立つスクリプトとなれば幸いです。

また、改善点がございましたら、githubのREADME.mdにも記載している通り、Twitterにまでご連絡ください。

2021年2月7日日曜日

Pine64のGPIO系の備忘録

まず、初めにPine64はRasberryPiと同じGPIOピンを持ったシングルボードコンピュータです。 

つまり、RasberryPiの互換品です。 

そのため、次のようなファイルのピンアサインをされています。

pine64ピンアサイン 

 

ピンアサインなどの細かい情報は次のサイトを参考にしました。

PINE64のGPIOでLEDを点灯させる 


私の場合、リレースイッチを使いたかったため以下のような配線とシェルスクリプトを書きました。

 


#!/bin/sh

cd /sys/class/gpio
echo 32 > export
cd gpio32
pwd
sleep 3
echo "out" > direction
echo Wake on Lan.
sleep 0.5
echo "in" > direction


リレーの参考にしたサイトは次のサイトです。

SODIALの送料込み143円の激安リレーユニットをRaspberry Piで利用成功(2016年の物欲その36)