tag:blogger.com,1999:blog-69604816442461905272024-02-21T19:42:58.470+09:00iooiau blogUnknownnoreply@blogger.comBlogger51125tag:blogger.com,1999:blog-6960481644246190527.post-13751367891037826612024-02-18T23:11:00.000+09:002024-02-18T23:11:45.785+09:00PictureFan ver.0.56.0 を公開<p>
PictureFan の ver.0.56.0 を公開しました。<br>
<a href="https://iooiau.net/picturefan.html#download">ダウンロードはこちら</a>、<a href="https://iooiau.net/picturefan_history.html">更新履歴はこちら</a>です。
</p>
<p>
今回の主な機能強化としては、Susie プラグイン関係があります。<br>
64ビットの Susie プラグイン対応に関して、以前コメントで面倒なことになりそうと書きましたが、実際は簡単に対応できました。
</p>
Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-6960481644246190527.post-65026162872950225172024-01-04T23:48:00.000+09:002024-01-04T23:48:33.718+09:00PictureFan ver.0.55.0 を公開<p>
PictureFan の ver.0.55.0 を公開しました。<br>
<a href="https://iooiau.net/picturefan.html#download">ダウンロードはこちら</a>、<a href="https://iooiau.net/picturefan_history.html">更新履歴はこちら</a>です。
</p>
<p>
今回も様々な機能追加と不具合修正を行っています。
</p>
<p>
追加した機能の一つに XMP への対応があります。<br>
インターフェースが手抜きなので編集するのはやりづらいと思いますが、ファイルを保存し直したり形式を変換したりといった時にデータが失われないというだけでもメリットがあります。
</p>
Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-6960481644246190527.post-3619288514530841992023-07-30T22:34:00.000+09:002023-07-30T22:34:44.797+09:00PictureFan ver.0.54.0 を公開<p>
PictureFan の ver.0.54.0 を公開しました。<br>
<a href="https://iooiau.net/picturefan.html#download">ダウンロードはこちら</a>、<a href="https://iooiau.net/picturefan_history.html">更新履歴はこちら</a>です。
</p>
<p>
今回も不具合の修正と、ちょっとした機能の追加を行っています。
</p>
Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-6960481644246190527.post-20226847827236735512023-04-02T22:14:00.000+09:002023-04-02T22:14:05.120+09:00PictureFan ver.0.53.0 を公開<p>
PictureFan の ver.0.53.0 を公開しました。<br>
<a href="https://iooiau.net/picturefan.html#download">ダウンロードはこちら</a>、<a href="https://iooiau.net/picturefan_history.html">更新履歴はこちら</a>です。
</p>
<p>
今回もちょっとした機能の追加と、不具合修正を行っています。
</p>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-6960481644246190527.post-50008595037605139722023-02-27T22:33:00.000+09:002023-02-27T22:33:20.721+09:00PictureFan ver.0.52.0 を公開<p>
PictureFan の ver.0.52.0 を公開しました。<br>
<a href="https://iooiau.net/picturefan.html#download">ダウンロードはこちら</a>、<a href="https://iooiau.net/picturefan_history.html">更新履歴はこちら</a>です。
</p>
<p>
今回もちょこちょことした機能追加と、不具合の修正を行っています。
</p>
Unknownnoreply@blogger.com10tag:blogger.com,1999:blog-6960481644246190527.post-84040707968573754062022-12-05T22:30:00.000+09:002022-12-05T22:30:54.319+09:00PictureFan ver.0.51.0 を公開<p>
PictureFan の ver.0.51.0 を公開しました。<br>
<a href="https://iooiau.net/picturefan.html#download">ダウンロードはこちら</a>、<a href="https://iooiau.net/picturefan_history.html">更新履歴はこちら</a>です。
</p>
<p>
今回は大きな機能追加などはありませんが、細かい機能追加や不具合修正を行っています。
</p>
Unknownnoreply@blogger.com7tag:blogger.com,1999:blog-6960481644246190527.post-15327871037525221272022-08-14T22:54:00.000+09:002022-08-14T22:54:05.087+09:00PictureFan ver.0.50.0 を公開<p>
PictureFan の ver.0.50.0 を公開しました。<br>
<a href="https://iooiau.net/picturefan.html#download">ダウンロードはこちら</a>、<a href="https://iooiau.net/picturefan_history.html">更新履歴はこちら</a>です。
</p>
<p>
主な更新内容としては、サムネイルにサイドランチャーを追加しました。<br>
機能的にはランチャーバーと同じですが、縦長に表示することができます。
</p>
<p>
マニアックなところでは、OS/2 BMP のハフマン1D圧縮形式の読み書きに対応しました。<br>
BMP 形式は結構複雑で多様なのですが、中でもこの圧縮形式は対応するプログラムがほとんど存在しない幻の形式です。
</p>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6960481644246190527.post-68442779178753044922022-05-21T22:55:00.000+09:002022-05-21T22:55:48.768+09:00PictureFan ver.0.49.0 を公開<p>
PictureFan の ver.0.49.0 を公開しました。<br>
<a href="https://iooiau.net/picturefan.html#download">ダウンロードはこちら</a>、<a href="https://iooiau.net/picturefan_history.html">更新履歴はこちら</a>です。
</p>
<p>
更新内容は少ないのですが、設定ダイアログで一部のページが他のページに置き換わるという不具合があったため、取り急ぎ公開となりました。
</p>
<p>
今回、「簡易ビューア」の名称を「単独ビューア」に改めました。<br>
簡易ビューアは当初は実際に簡易なものだったのですが、機能追加によって全然簡易ではなくなってしまっていましたので、名称変更しました。
</p>
<p>
また、初回起動時に初期設定ダイアログが表示されるようになり、そこから起動時の状態などを選択してもらう形にしました。<br>
これまでは最初にメインウィンドウが表示されるのがデフォルトで、設定でサムネイル表示などで起動するように変更できたわけですが、まあ分かりづらいだろうということで、最初に選ぶようにしました。
</p>
<p>
PictureFan の公開当初、サムネイルはおまけに過ぎず低機能でしたが、現在ではむしろサムネイルが本体のようになってしまいました。<br>
なので「メインウィンドウ」という名称も変えた方がいいかと思ったのですが、いい呼び名が思い浮かばなかったため、とりあえずそのままにしました。
</p>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6960481644246190527.post-82366956769596292052022-05-07T01:33:00.001+09:002022-05-07T01:33:09.510+09:00PictureFan ver.0.48.0 を公開<p>
PictureFan の ver.0.48.0 を公開しました。<br>
<a href="https://iooiau.net/picturefan.html#download">ダウンロードはこちら</a>から、<a href="https://iooiau.net/picturefan_history.html">更新履歴はこちら</a>をご覧ください。
</p>
<p>
今回はいつもに比べれば更新内容は少なめですが、機能追加と不具合修正を行っています。
</p>
<p>
主な変更点として、フォルダのサムネイルが今まではエクスプローラーと同じものを表示していましたが、これを独自に作成できるようにしました。<br>
PictureFan 側の画像キャッシュが有効に利用できること、また Windows 11 でフォルダにサムネイルが表示されなくなってしまったためでもあります。
</p>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6960481644246190527.post-3971605318575991232022-03-20T00:36:00.000+09:002022-03-20T00:36:15.229+09:00PictureFan ver.0.47.0 を公開<p>
PictureFan の ver.0.47.0 を公開しました。<br>
<a href="https://iooiau.net/picturefan.html#download">ダウンロードはこちら</a>です。<br>
詳しい更新内容は<a href="https://iooiau.net/picturefan_history.html">更新履歴</a>をご覧ください。
</p>
<p>
今回の主な機能追加としては、サムネイルの検索機能を今までのエクスプローラーに丸投げから、独自の実装に変更しました。<br>
ついでに、類似画像の検索機能も追加しました。<br>
簡易的な方法なので、同一の画像を探す場合はいいとしても、似ているが異なる画像の類似度算出は改善の余地が大きいと思いますが…。
</p>
<p>
ダイアログのダークモード対応も行いました。<br>
これは手間が掛かるので、そのうち簡単に対応できるように Windows 側で改善されることを期待していましたが、一向にそのような改善がなされないので自前で実装してしまいました。
</p>
<p>
その他、例によって数々の不具合修正も行っています。
</p>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6960481644246190527.post-53654738566269449052022-01-10T02:01:00.000+09:002022-01-10T02:01:17.858+09:00PictureFan ver.0.46.0 を公開<p>
PictureFan の ver.0.46.0 を公開しました。<br>
<a href="https://iooiau.net/picturefan.html">ダウンロードはいつもの場所</a>から、<a href="https://iooiau.net/picturefan_history.html">詳しい更新内容もいつもの場所</a>から見られます。
</p>
<p>
今回の主な機能追加として以下のものがあります。
</p>
<ul>
<li>タブを縦型表示できるようにした</li>
<li>ランチャーバーの項目をフォルダ分けできるようにした</li>
<li>サイドパネルでユーザープロパティの編集を行えるようにした</li>
</ul>
<p>
しかし今回の更新で一番重要なのは、サムネイル表示で起動せずにファイルを開くとクラッシュする…という酷いバグの修正です。<br>
普段サムネイルを起点にする使い方をしているので、気が付きませんでしたね…。
</p>
<p>
その他、ご報告いただいた問題も修正しました。
</p>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-6960481644246190527.post-61790244147190272782021-10-02T23:20:00.000+09:002021-10-02T23:20:28.229+09:00Exif の JPEGInterchangeFormat タグの謎<p>
Exif に JPEG のサムネイルデータを付加した際に、その JPEG データの位置を JPEGInterchangeFormat タグで表しますが、規格書に疑問点があります。
</p>
<p>
Exif の規格書「デジタルスチルカメラ用画像ファイルフォーマット規格 Exif 2.32」 (CIPA DC-008-2019) には、JPEGInterchangeFormat タグについて以下の説明があります。
</p>
<blockquote>
■ JPEG の SOI へのオフセット JPEGInterchangeFormat<br>
JPEG 圧縮サムネイルデータの先頭バイト(SOI)へのバイトオフセット。サムネイルが JPEG 圧縮の場合にのみ用いる。主画像の JPEG データには記録してはならない。
</blockquote>
<p>
これを見ると、JPEGInterchangeFormat は JPEG データのバイト位置を格納すればいいように見えます。<br>
しかし、同規格の「附属書 A 画像ファイル記載例」の「A.3 JPEG 圧縮(4:2:2)ファイル」に掲載されている例ではこの説明と異なっています。
</p>
<a name='more'></a>
<p>
以下の表は掲載されている例のサムネイルの部分を抜き出したものです。<br>
(Offset 以外の数値はリトルエンディアン)
</p>
<style>
#exif-table-container { overflow-x:auto; }
#exif-table { border:1px solid #000000; width:100%; border-collapse:collapse; white-space:nowrap; }
#exif-table th { border:1px solid #000000; text-align:center }
#exif-table td { border:1px solid #000000; text-align:center }
</style>
<div id="exif-table-container">
<table id="exif-table">
<tbody>
<tr><th rowspan="12">1st IFD</th><th>Offset<br>(Hex)</th><th>Name</th><th colspan="4">Entry Number<br>(Hex)</th></tr>
<tr><td>02C4</td><td>Number Of Entries</td><td colspan="4">0700</td></tr>
<tr><th>Offset<br>(Hex)</th><th>Name</th><th>Tag ID<br>(Hex)</th><th>Type<br>(Hex)</th><th>Count<br>(Hex)</th><th>ValueOffset<br>(Hex or "ASCII")</th></tr>
<tr><td>02C6</td><td>Compression</td><td>0301</td><td>0300</td><td>01000000</td><td>01000000</td></tr>
<tr><td>02D2</td><td>XResolution</td><td>1A01</td><td>0500</td><td>01000000</td><td>1E030000</td></tr>
<tr><td>02DE</td><td>YResolution</td><td>1B01</td><td>0500</td><td>01000000</td><td>26030000</td></tr>
<tr><td>02EA</td><td>ResolutionUnit</td><td>2801</td><td>0300</td><td>01000000</td><td>02000000</td></tr>
<tr><td>02F6</td><td>JPEGInterchangeFormat</td><td>0102</td><td>0400</td><td>01000000</td><td>2D0E0000</td></tr>
<tr><td>0302</td><td>JPEGInterchangeFormatLength</td><td>0202</td><td>0400</td><td>01000000</td><td>FF0A0000</td></tr>
<tr><td>030E</td><td>YCbCrPositioning</td><td>1302</td><td>0300</td><td>01000000</td><td>02000000</td></tr>
<tr><th>Offset<br>(Hex)</th><th>Name</th><th colspan="4">Offset<br>(Hex)</th></tr>
<tr><td>031A</td><td>Next IFD Offset</td><td colspan="4">00000000</td></tr>
<tr><th rowspan="3">Value longer than 4Byte of 1st IFD</th><th>Offset<br>(Hex)</th><th>Data<br>(Hex or "ASCII")</th><th colspan="4">Name</th></tr>
<tr><td>031E</td><td>4800000001000000</td><td colspan="4">XResolution Value</td></tr>
<tr><td>0326</td><td>4800000001000000</td><td colspan="4">YResolution Value</td></tr>
<tr><th rowspan="2">Thumbnail Image Data</th><th>Offset<br>(Hex)</th><th>Name</th><th colspan="4">Data</th></tr>
<tr><td>032E</td><td>Thumbnail Data</td><td colspan="4">(JPEG Stream)</td></tr>
</tbody>
</table>
</div>
<p>
これを見ると、サムネイルデータの開始位置は 032E ですが、JPEGInterchangeFormat の ValueOffset はなぜか 2D0E0000 になっています。<br>
サムネイルデータの先頭バイトへのバイトオフセットというのであれば、2E030000 となるように思うのですが。
</p>
<p>
この 2D0E0000 というのは、どうも 「032E (サムネイルのデータ位置) + 0AFF (JPEGInterchangeFormatLength) = 0E2D」となっているようです。<br>
ということは、この例では JPEGInterchangeFormat は JPEG データの最後 (EOI) の次の位置を表しているようですが、なぜそうなっているのかが不明です。<br>
私が何か勘違いをしているのでしょうか。
</p>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6960481644246190527.post-48083548598240769962021-09-05T01:23:00.000+09:002021-09-05T01:23:51.101+09:00PictureFan ver.0.45.0 を公開<p>
PictureFan の ver.0.45.0 を公開しました。<br>
<a href="http://iooiau.net/picturefan.html#download">ダウンロード</a><br>
<a href="http://iooiau.net/picturefan_history.html">更新履歴</a>
</p>
<p>
今回はちょっとした機能の追加と、不具合修正を行いました。
</p>
Unknownnoreply@blogger.com5tag:blogger.com,1999:blog-6960481644246190527.post-65826828270578256362021-07-24T01:30:00.000+09:002021-07-24T01:30:40.541+09:00PictureFan ver.0.44.0 を公開<p>
PictureFan の ver.0.44.0 を公開しました。<br>
<a href="http://iooiau.net/picturefan.html#download">ダウンロード</a><br>
<a href="http://iooiau.net/picturefan_history.html">更新履歴</a>
</p>
<p>
今回も多くの機能追加と不具合修正を行っています。
</p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6960481644246190527.post-61452553934617300602021-01-25T00:22:00.000+09:002021-01-25T00:22:13.707+09:00PictureFan ver.0.43.0 を公開<p>
PictureFan の ver.0.43.0 を公開しました。<br>
ダウンロードは<a href="http://iooiau.net/picturefan.html#download">いつもの場所</a>からどうぞ。<br>
詳しい<a href="http://iooiau.net/picturefan_history.html">更新内容はこちら</a>をご覧ください。
</p>
<p>
今回も多数の機能追加と不具合修正を行いました。<br>
主な機能追加としては、メインウィンドウに各種の情報の表示などを行うサイドパネルを追加しました。<br>
また、ダークモードに合わせた配色を選択できるようにしました。
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyCYp4EsK6ZbglarfkXVCFePxR7VWOv1J1TEdXG_HmiRdKS79eAiIirkEq4wCdwZXFbz-Iu62j_rnM2Uy4wj5dT-AawRS-Rgz-5gVPXbFGu1KL5p27O0plkRaD7G1xEVp8qvewHqMPIbQ/s900/picturefan_mainwindow_dark.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="320" data-original-height="800" data-original-width="900" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyCYp4EsK6ZbglarfkXVCFePxR7VWOv1J1TEdXG_HmiRdKS79eAiIirkEq4wCdwZXFbz-Iu62j_rnM2Uy4wj5dT-AawRS-Rgz-5gVPXbFGu1KL5p27O0plkRaD7G1xEVp8qvewHqMPIbQ/s320/picturefan_mainwindow_dark.png"/></a></div><div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd6S5TJnBUxlKYBIgB6p5StH73rPx7JSiXCkkdj4A1CxgPjpGwWQqTmJ3u8ovjLXQ2wT_mjfr297Fy6ti-qY9w4YB0PjqaUletC6Z6WsW_nXtcba2CjBtK2-jXDLg7ImbOiQkA-02ZAtU/s900/picturefan_thumbnails_dark.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="320" data-original-height="500" data-original-width="900" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd6S5TJnBUxlKYBIgB6p5StH73rPx7JSiXCkkdj4A1CxgPjpGwWQqTmJ3u8ovjLXQ2wT_mjfr297Fy6ti-qY9w4YB0PjqaUletC6Z6WsW_nXtcba2CjBtK2-jXDLg7ImbOiQkA-02ZAtU/s320/picturefan_thumbnails_dark.png"/></a></div>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-6960481644246190527.post-74417128714515645322020-06-24T00:41:00.000+09:002020-06-24T00:41:14.908+09:00PictureFan ver.0.42.0 を公開<p>
PictureFan の ver.0.42.0 を公開しました。<br>
ダウンロードは<a href="http://iooiau.net/picturefan.html#download">いつもの場所</a>からできます。<br>
詳しい更新内容は<a href="http://iooiau.net/picturefan_history.html">更新履歴</a>をご覧ください。
</p>
<p>
今回も色々な機能追加と、多数の不具合修正を行っています。
</p>
<p>
サムネイルの主な機能追加としては、プライベートタブ機能があります。<br>
また、メインウィンドウと簡易ビューアにもプライベートモード機能を追加しています。
</p>
<p>
簡易ビューアの機能強化も行い、フィルタ処理などを行えるようにしました。
</p>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-6960481644246190527.post-45569222449257376862020-02-02T01:35:00.002+09:002020-02-02T01:35:47.830+09:00PictureFan ver.0.41.0 を公開<p>
PictureFan の ver.0.41.0 を公開しました。<br>
詳しい更新内容は<a href="http://iooiau.net/picturefan_history.html">更新履歴</a>をご覧ください。<br>
ダウンロードは<a href="http://iooiau.net/picturefan.html#download">いつもの場所</a>からできます。
</p>
<p>
今回も色々な機能追加と、たくさんの不具合修正を行っています。<br>
主な機能追加としては以下のようなものがあります。
</p>
<p>
選択範囲やグリッド設定をプリセットとして登録できるようにしました。<br>
また、範囲選択を元に戻す/やり直しできるようにしました。<br>
これは、私が誤操作で範囲選択を解除してしまうことが度々あったので追加した機能です。
</p>
<p>
サムネイルの機能追加も行いました。<br>
サムネイル画像上で左ボタンを長押しすると、画像がプレビュー表示される機能を追加しました。<br>
また、ファイル情報のコピー機能で今まで「名前をコピー」と「パスをコピー」の2種類しか無かったものを、任意のフォーマットをいくつも登録できるようにしました。<br>
フォーマット変換機能は今まで実行を開始すると終わるまで何もできず、進捗状況も分からなかったものを、別スレッドで実行してダイアログで実行状況が表示されるようにしました。
</p>
<p>
簡易ビューアの機能強化も行いました。<br>
ファイルの移動/コピー/削除/名前の変更を行えるようにした他、JPEG ロスレス変換や、画像を壁紙に設定する機能も追加しました。<br>
また、ステータスバーも追加しています。<br>
最早簡易でもなんでもなくなりつつありますが…。
</p>
<p>
JPEG 2000 の複数レイヤーでの保存の対応や、GIF の ICC プロファイルの読み書きの対応なども行っています。<br>
GIF の ICC プロファイルとか誰か使ってる人いるのか?という感じではありますが。
</p>
Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-6960481644246190527.post-89681485010390644192019-11-18T02:06:00.001+09:002019-11-18T02:06:29.197+09:00PictureFan ver.0.40.0 を公開<p>
PictureFan の ver.0.40.0 を公開しました。<br>
<a href="http://iooiau.net/picturefan.html">ダウンロードはこちら</a>から。<a href="http://iooiau.net/picturefan_history.html">更新内容はこちら</a>です。
</p>
<p>
今回も色々と機能追加を行いました。<br>
また、いつも以上に不具合修正も行っています。
</p>
<a name='more'></a>
<p>
以下、いくつか主な機能追加の内容を列挙します。
</p>
<p>
一括変換で、リストファイルを出力できるようにしました。<br>
これによって、サムネイル画像一覧用の HTML を出力したりすることができます。
</p>
<p>
サムネイルでは、画像の上に任意の情報を重ねて表示する機能を追加しました。<br>
また、サムネイルのテキストやステータスバーで、任意の書式を指定した項目を追加できるようにしました。<br>
例えば、動画の再生時間を表示するといったことができます。
</p>
<p>
スクリプトの実行時に使うエディタに <a href="https://www.scintilla.org/">Scintilla</a> を利用するようにしました。<br>
今までのメモ帳相当から、構文の強調表示や折り畳みなどにも対応した本格的なエディタになっています。<br>
また、テキスト書式も Scintilla を使った専用エディタを呼び出して編集することができます。
</p>
<p>
PNG の保存時に、<a href="https://github.com/google/zopfli">Zopfli</a> による最適化が行えるようになりました。<br>
これによって今までの最適化機能より、さらにサイズを小さくすることができます。
</p>
<p>
画像の拡大縮小で、任意の再サンプリング式を入力できるという、誰が使うのか分からないマニアックな機能を追加しました(PictureFan 全体にそんな機能ばっかりですが)。<br>
「ぼくのかんがえたさいきょうの窓関数」を使うことができます。
</p>
<p>
テキスト書式では繰り返し構文や配列/連想配列などに対応しました。<br>
正規表現マッチ用の関数なども追加しています。
</p>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6960481644246190527.post-70943638347837827872019-07-29T01:15:00.000+09:002019-07-29T01:15:00.564+09:00PictureFan ver.0.39.0 を公開<p>
PictureFan の ver.0.39.0 を公開しました。<br>
<a href="http://iooiau.net/picturefan.html">ダウンロードはこちら</a>から。
<a href="http://iooiau.net/picturefan_history.html">更新内容はこちら</a>です。
</p>
<p>
今回もサムネイルを中心に色々といじくりました。<br>
不具合の修正も多く行いました。
</p>
<a name='more'></a>
<p>
カスタマイズ性も強化して、メニューバーをカスタマイズできるようになりました。<br>
またキー割り当ても強化し、一つの機能に複数のキーを割り当てたり、逆に一つのキーに複数の機能を割り当てることもできるようになりました。
</p>
<p>
ヘルプもサムネイル関係を中心に、かなり内容の追加を行いました。<br>
ヘルプは<a href="http://iooiau.net/picturefan/help.html">サイト上でも公開</a>しています。
</p>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6960481644246190527.post-11822170662403402172019-04-22T00:52:00.000+09:002019-04-22T00:52:11.202+09:00PictureFan ver.0.38.0 を公開<p>
PictureFan の ver.0.38.0 を公開しました。<br />
<a href="http://iooiau.net/picturefan.html" target="_blank">ダウンロードはこちらから</a>できます。<br />
<a href="http://iooiau.net/picturefan_history.html" target="_blank">更新内容はこちら</a>です。
</p>
<p>
新しいバージョンはもう少し先の公開を考えていましたが、ver.0.37.0 に一括変換で必ずクラッシュする致命的な不具合があったため、取り急ぎ公開しました。<br />
今回の主な機能追加としては、ランチャーバーの大幅な強化と、テキスト書式の大幅な強化が挙げられます。
</p>
<a name='more'></a>
<p>
ランチャーバーは、今まで単に外部ツールを起動できるだけでしたが、今回任意のコマンドの実行やスクリプトの実行などが行えるようになりました。<br />
今までツールバーに割り当てられなかった機能も、ランチャーバーに割り当てることができます。<br />
また、メインウィンドウにもランチャーバーを表示できるようになりました。
</p>
<p>
テキスト書式(タイトルのカスタマイズやファイル名の一括変換などで使える書式)も、今までは変数を使った置き換えと条件分岐程度しかできませんでしたが、
演算子や各種関数も使用できるようになりましたので、できることが大幅に増えています。<br />
ただ、ヘルプの記述がかなり説明不足になってしまっている感は否めませんが…。<br />
もっとも、それは全体的に言えることですね。
</p>
Unknownnoreply@blogger.com7tag:blogger.com,1999:blog-6960481644246190527.post-19594898163767080472019-04-01T00:20:00.000+09:002019-04-01T00:20:25.074+09:00サイト移転<p>
Yahoo!ジオシティーズが3月31日をもって終了したため、サイトを移転しました。<br />
新しいアドレスは <strong><a href="http://iooiau.net/" target="_blank">http://iooiau.net/</a></strong> です。
</p>
<p>
基本的に今までのリンクは http://www.geocities.jp/iooiau/ のところを http://iooiau.net/ に置き換えて頂ければアクセスできるはずです。
</p>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6960481644246190527.post-37776175418026955412019-02-25T00:37:00.000+09:002019-02-25T00:37:56.904+09:00PictureFan ver.0.37.0 を公開<p>
PictureFan の ver.0.37.0 を公開しました。<br/>
ダウンロードは<a href="http://www.geocities.jp/iooiau/picturefan.html" target="_blank">いつもの場所</a>からどうぞ。<br/>
詳しい更新内容も<a href="http://www.geocities.jp/iooiau/picturefan_history.html" target="_blank">いつもの場所</a>にあります。
</p>
<p>
今回の大きな変更点として、スクリプトを今までの WSH (Windows Script Host) から Python に変更しました。
</p>
<a name='more'></a>
<p>
その理由としては、以下の点が挙げられます。
</p>
<ul>
<li>今流行り</li>
<li>NumPy、PIL などのライブラリを利用できる</li>
<li>WSH はクラスにメソッドを追加したりするのが面倒</li>
<li>WSH は Windows 依存</li>
</ul>
<p>
スクリプトから利用できる機能も増やし、サムネイルや一括変換でもスクリプトを実行できるようになりました。
</p>
<p>
今までの JScript などは使えなくなりましたのでご了承ください。
</p>
<p>
サムネイルの機能追加としては、各ファイルにタグなどを設定できるようにしました。<br/>
ツリーに新たに「分類」タブを設け、そちらでタグなどを検索して分類することができます。<br/>
設定した情報は SQLite のデータベースに保存されます。
</p>
<p>
サムネイルの表示のカスタマイズ性も上げ、例えば次のような感じで色々と表示できるようになりました。<br/>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZC9dBe7ZbJf1JhtG8XG46I_emXsc5cQZq6NgMlfTmme2eR-jnGyJ_GejGJG8gJpInLtnnLTywYbdAaNnOmsGCfV6Vw8YuSLhksEU329HuDIWefUf36WYbFziSXyX5tMlY54qW1tWvwm8/s1600/thumbnails_item_customize.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZC9dBe7ZbJf1JhtG8XG46I_emXsc5cQZq6NgMlfTmme2eR-jnGyJ_GejGJG8gJpInLtnnLTywYbdAaNnOmsGCfV6Vw8YuSLhksEU329HuDIWefUf36WYbFziSXyX5tMlY54qW1tWvwm8/s1600/thumbnails_item_customize.png" data-original-width="376" data-original-height="180" /></a><br/>
もちろん画像だけのシンプルな表示にもできます。
</p>
<p>
またサムネイルのキャッシュファイルの形式を変更し、こちらも SQLite を使うようにしました。<br/>
今までは独自形式を使用していましたが、1つでもファイルの更新があると全体が保存し直されるなど、手抜き実装により非効率なものになっていましたので、今回置き換えました。<br/>
古いキャッシュファイルは、新しいバージョンを最初に実行した際に削除されます。
</p>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6960481644246190527.post-8450799364604017862019-02-08T21:56:00.000+09:002019-02-27T00:16:17.981+09:00印刷ダイアログで指定した枚数の二乗印刷されてしまう問題<p>
PictureFan の印刷周りのコードを見直していて色々調べていたところ、MS のドキュメントに何やら知らないことが書いてあるのを見つけてしまいました。
</p>
<p>
<a href ="https://docs.microsoft.com/en-us/windows/desktop/api/commdlg/ns-commdlg-tagpdexa" target="_blank">PRINTDLGEXA structure</a>
</p>
<blockquote>
<p>
Starting with Windows Vista, when you call PrintDlg or PrintDlgEx with PD_RETURNDC set to TRUE and PD_USEDEVMODECOPIESANDCOLLATE set to FALSE, the PrintDlg or PrintDlgEx function sets the number of copies in the nCopies member of the PRINTDLG structure, and it sets the number of copies in the structure represented by the hDC member of the PRINTDLG structure.
</p>
<p>
When making calls to GDI, you must ignore the value of nCopies, consider the value as 1, and use the returned hDC to avoid printing duplicate copies.
</p>
</blockquote>
<p>
いつの間にかそんな変更されても困るんですけど…。
</p>
<p>
というわけで、Vista 以降は PD_USEDEVMODECOPIESANDCOLLATE を付けようが付けまいが、 PD_RETURNDC を使っている場合は nCopies とか PD_COLLATE は無視して、1回だけ描画すればいいということですね(ですよね?)。
</p>
<a name='more'></a>
<p>
確かに同じものを複数枚印刷する場合には、アプリケーション側で同じデータを何度も転送するより、OS とかドライバとかハードウェアとかのもっと低いレイヤで扱った方が効率的にできるでしょう。<br />
しかしいきなりこんな変更をされたら、既存のプログラムで二乗枚印刷されるようになってしまうと思うのですが、manifest で Vista 対応が宣言されているかで挙動が変わるのかも知れません。
</p>
<p>
現在の PictureFan (ver.0.36.0)には、この複数枚印刷しようとすると二乗枚印刷される不具合がありますので注意してください。<br />
手元では既に修正していますが、他に大幅に手を入れてしまっているため、いつ公開できるかは未定です。<br />
他にも不具合をいくつか発見しているので、なるべく早めに公開したいところではありますが。
</p>
<p>
2/25修正: 当初ボケて2倍と書いていましたが二乗でした。
</p>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6960481644246190527.post-18274423519183639542018-09-22T01:00:00.000+09:002018-09-22T01:00:54.693+09:00PictureFan ver.0.36.0 を公開<p>
PictureFan の ver.0.36.0 を公開しました。<br>
ダウンロードは<a href="http://www.geocities.jp/iooiau/picturefan.html#download" target="_blank">いつもの場所</a>からどうぞ。
</p>
<p>
今回も多くの機能追加を行いました。<br>
また、いつにも増して沢山の不具合を発見したので、その修正も行いました。<br>
詳しい更新内容は<a href="http://www.geocities.jp/iooiau/picturefan_history.html" target="_blank">更新履歴</a>をご覧ください。
</p>
<a name='more'></a>
<p>
今回から Windows Vista では動作しなくなりました。<br>
Windows 7/8/8.1 は対応しているはずですが、例によって Windows 10 でしか動作確認していません。
</p>
<p>
サムネイルは、ファイル名の一括変更や書庫の作成など、ありそうで無かった機能を追加しました。<br>
フォルダ毎に表示方法を設定したり、詳細表示でエクスプローラーと同じカラムを表示したりといったこともできるようになりました。
</p>
<p>
基本的な画像表示機能も強化して、拡大縮小方法に Lanczos3 を追加したり、24ビット画像でも透過色をちゃんと透過表示できるようにしたりしました。
</p>
<p>
見た目上の変化として大きいのは、ダイアログのフォントが Yu Gothic UI または Meiryo UI になったことでしょうね。<br>
私個人の趣味としては、MS ゴシックみたいなギザギザのフォントが嫌なので、今回 Vista を切ったことを契機に(素の Vista には Meiryo UI が無い)今までのMS Pゴシックから変えました。<br>
行間が広くなったので、ゴチャゴチャと無闇に盛り込まれた設定項目が多少見やすくなったのではないでしょうか。
</p>
Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-6960481644246190527.post-18633861421039140132018-05-30T22:21:00.000+09:002019-10-31T00:36:50.749+09:00Visual C++ の wprintf の独自仕様<p>
今でこそかなり改善されましたが、Visual C++ は C/C++ 標準規格に沿わない独自仕様が多いことで有名です。<br />
その中で意外と知られていないと思われるのが、wprintf 系関数で文字列を出力する際の指定子の違いです。
</p>
<p>
printf で %s を 指定した場合は const char *、%c を指定した場合は char (実際に渡るのは int ですが)を要求されます。
</p>
<pre class="code">
printf("%s %c\n", "string", 'c');
</pre>
<p>
ここまでは当然のことですが、wchar_t が入ってくると話がややこしくなります。<br />
C/C++ の規格上、wprintf などの wchar_t 系の関数であっても、%s は const char *、%c は char が要求されます。<br />
そして、wchar_t を扱いたい場合は、%ls と %lc を使わなければなりません。
</p>
<pre class="code">
/* wprintf に char の文字列と文字を渡す場合 */
wprintf(L"%s %c\n", "string", 'c');
/* wprintf に wchar_t の文字列と文字を渡す場合 */
wprintf(L"%ls %lc\n", L"string", L'c');
</pre>
<p>
しかしながら、Visual C++ はこの規格に従っておらず、wprintf に %s と %c を指定した場合、wchar_t であると解釈します。<br />
また、char を渡したい場合は独自仕様の指定子 %hs と %hc を使う必要があります。
</p>
<pre class="code">
/* Visual C++ の独自仕様により、%s と %c は wchar_t が要求される */
wprintf(L"%s %c\n", L"string", L'c');
/* char を渡す場合、独自仕様の %hs と %hc を使用する */
wprintf(L"%hs %hc\n", "string", 'c');
</pre>
<a name='more'></a>
<p>
これは ANSI コードページから Unicode に移行する際にソースコードの変更が少なく済むようにした結果でしょうが、
標準規格に沿って書かれたプログラムが正しく動作しなくなってしまいます。<br />
ただ、Windows 以外の UNIX などで wchar_t が余り使われないことから、実際に問題になる場面が少なかったものと思われます。
</p>
<p>
しかし、やはり規格に沿っていないのは問題があるということで、Visual C++ 2015 の CTP で標準規格通りの動作になるように変更が行われました。<br />
デフォルトでは規格通りの動作を、_CRT_STDIO_LEGACY_WIDE_SPECIFIERS を定義することで従来の動作になるという仕様です。<br />
<a href="https://blogs.msdn.microsoft.com/vcblog/2014/06/18/c-runtime-crt-features-fixes-and-breaking-changes-in-visual-studio-14-ctp1/" target="_blank">C Runtime (CRT) Features, Fixes, and Breaking Changes in Visual Studio 14 CTP1 | Visual C++ Team Blog</a><br />
これで正しくはなりますが、今更そんな変更をすれば当然既存のコードに大きな影響を与えてしまいます。<br />
結局この変更は取り下げられてしまいました。
</p>
<p>
その代わりとして、_CRT_STDIO_ISO_WIDE_SPECIFIERS を定義すれば規格準拠の動作になる仕様とされました。<br />
<a href="https://blogs.msdn.microsoft.com/vcblog/2015/06/22/format-specifiers-checking/" target="_blank">Format Specifiers Checking | Visual C++ Team Blog</a>
</p>
<pre class="code">
/* _CRT_STDIO_ISO_WIDE_SPECIFIERS の定義で Visual C++ でも規格準拠の動作 */
#define _CRT_STDIO_ISO_WIDE_SPECIFIERS
#include <stdio.h>
int main(void)
{
wprintf(L"%s %c\n", "string", 'c');
wprintf(L"%ls %lc\n", L"string", L'c');
return 0;
}
</pre>
<p>
ただ、TCHAR を使って tchar.h の _tprintf などを使う場合、Unicode とそうでない場合とで指定子も変えるようにしないといけなくなりますので、そこは面倒になります。
</p>
<p>
なお当然ではありますが、_CRT_STDIO_ISO_WIDE_SPECIFIERS を指定したとしても <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms647550(v=vs.85).aspx" target="_blank">wsprintf</a> などの Win32 API の動作は変わらず、独自仕様のままです。
</p>
<h4>
2019/10/31 追記
</h4>
<p>
例によって、この辺りの事情が The Old New Things で解説されていました。<br>
<a href="https://devblogs.microsoft.com/oldnewthing/20190830-00/?p=102823" target="_blank">The sad history of Unicode printf-style format specifiers in Visual C++</a>
</p>
<p>
なお、The Old New Things では %hs と %hc があたかも C 標準であるかのように書かれていますが、これらは C/C++ の標準規格に存在していません。
</p>Unknownnoreply@blogger.com0