0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

フォトビューワーみたいなのを作った話

0
Last updated at Posted at 2021-02-04

なんで作ったの?

画像、特に縦長の画像を分割したい。

例えば、

a.png
(いらすとや画像)
https://www.irasutoya.com/p/terms.html

みたいな画像がある時、

a.png

a.png

に分けて表示する。

今の例では、上半身の画像を表示しているときに次の画像へ移動すると、下半身の画像になる。

細かいことは?

画像があまり荒く表示されるのも嫌なので、表示する高さの最低値は500。

ceil(画像の高さ / 定数) を分割数を決定する。
ここでは定数を400とした。
ここで計算した分割数が2の時は、分割数が確定する。

分割数が2の時

画像の高さが400~500の場合があり、高さの最低値を満たせない。
画像の高さ < 400 * 1.5の場合、分割数1の処理をする。
そうでない場合、分割数が2以上の時の処理をする。

分割数が1の時

高さの最低値を無視して、幅・高さそれぞれを2倍にした画像を表示。

分割数が2以上の時

元画像を切る長方形を仮決定する。

height_ = Math.Max(表示する高さの最低値, img.Height / 分割数)
{
 x: 0
 y: (img.Height - rect.Height) * curDivNum / (分割数 - 1)
 width: img.Width
 height: height_
}
x, y, width, heightは元画像基準である。

このプログラムのウィンドウの幅の候補 := このプログラムのウィンドウの高さ * rect.Width / rect.Heightと仮決定する。

if (このプログラムのウィンドウの幅の候補 > このプログラムのウィンドウの実際の幅) なら、アスペクト比に気をつけながら、実際の幅に収める。

フォルダ選択

プログラム起動時に、ピクチャディレクトリを表示。

以下のように表示。
ただし、以下ではピクチャディレクトリ直下のフォルダを表示しない。

image.png

カーソルを上に持っていくとこのようになる。
dummy 1と表示しているのは。このディレクトリのpathあら.../Picturesまでのパスを消して、''を' 'に置き換えて表示している。

image.png

fugaの画像部分、もしくはテキスト部分をクリックした場合、以下のように表示される。

image.png

カーソルを上に持っていくとこのようになる。

image.png

hogeフォルダを開くと、このようになる。

image.png

(サブディレクトリの)^* サブディレクトリを表示できる。

表示順

同画像の分割は上から下だが、ファイルの順番は作成日時、更新日時、最終アクセスタイム、ランダムスタート(更新日時ソートの順列のランダムな位置から順番に表示)、シャッフルがある。
(”日時”は方法が分からない。知っている人がいれば教えてくれると嬉しいです)

また、逆順表示機能もある。

トリミング

トリミングボタンを押すと、画像に割り当てられているプログラムが現在表示している画像を開く。

windows10で何もしていなければ、windowsフォトが開く。
フォーカスが戻ると、更新日時が元画像の更新日時の+900m、または-900msになる。

bestフォルダから移動、bestフォルダに移動

"→"ボダンがあり、このボタンをbestフォルダの画像を表示している時に押すと、from_bestフォルダに送られる。
bestフォルダ以外で押すと、bestフォルダに移動。

0
1
1

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?