2015年04月24日

デジタルフォトフレームとして使えるアプリを公開しました

さて、みなさまお悩みのデジタルフォトフレーム問題ですが
自分の気に入る機器やソフトが見当たらないので、
もう探すのはやめて自作することにしました。

私が何に悩んでたかと言うと
 ・最大枚数制限がある(まぁ、分かるんですけどね)
 ・サブフォルダの深さに制限があったりフォルダ分けできなかったり(まぁ、分かるんですけどね)
 ・動画再生がいまいち(再生時間指定できないとか、ファイル形式に制限があるとか)
 ・シャッフル再生がワンパターン
 ・ネットワーク経由で再生できない
 ・画像表示エラーなどで止まってしまう
 ・EXIFが見えない
などなどわがまま言いたい放題ですが、いろいろあるわけです。

これらを解決するためには
デジタルフォトフレームを使うのは無理があるので
自分でソフトを作ってWindowsタブレット上で表示することにしました。

完全に自分好みの仕様で作ったものですが、もし同じようなお悩みのある方はお試し下さい。
下記リンクからダウンロードできます。
フォトフレームアプリのダウンロード

Vectorからもダウンロード可能です
http://www.vector.co.jp/soft/winnt/art/se509864.html

▽概要
 ・画像と動画とPDFを表示できるスライドショーアプリケーションです。
 ・デジタルフォトフレームのような使い方を想定しています。
 ・フリーソフトウェアです。ご自由にお使い下さい。

▽特徴
 ・画像と動画とPDFを表示再生します。ファイル名も表示します。
 ・複数フォルダを指定可能です。サブフォルダ内もすべて表示対象となります
 ・表示、再生はシャッフル(ランダム)です。順次で表示、再生する機能はありません。
 ・画像表示時間を指定可能です
 ・動画はフル再生、指定時間再生が可能です
  (指定時間再生の場合は再生開始位置はランダムとなります)
 ・PDFは全ページ表示、ページ数指定表示が可能です
  (ページ数指定表示の場合は表示開始ページはランダムとなります)
 ・動画・PDFは対象外にすることもできます
 ・画像のEXIF情報がある場合はEXIF情報を表示します
  (撮影日時、EXIFバージョン、メーカー名、機種名、F値、焦点距離、ISO感度、露出時間、露出補正、フラッシュ使用)
 ・対象ファイルがISO形式の場合は、DVD-VIDEOとみなしてISO内のVOBファイルのどれかを再生します。
  (プロテクトがかかっている場合は再生できません。また、VOBファイルが見つからない場合はISO形式のまま再生を試みます)
 ・表示終了、表示復帰時刻を設定できます。表示終了時にはスクリーンセーバーを起動します。
 ・壁紙チェンジの機能はありませんが、本アプリをウィンドウ表示することで、同じように使うことができます。
  壁紙チェンジャーをお探しの方もお試し頂けると幸いです。
▽動作環境
 ・.NET Framework4
 ・WindowsMediaPlayer
 ・Acrobat SDK
 WindowsMediaPlayerとAcrobatReaderが動作する環境でお使い下さい
 動画の再生にはコーデックが必要な場合もありますので、事前にインストールして下さい

動作イメージ
posted by pltokyo at 15:58| Comment(5) | .NET

2014年06月24日

【.NET】UTF8に存在する文字コードかどうか調べる

.NETでUTF8に存在する文字かどうかをチェックする方法です。

チェックしたいバイト配列をUTF8エンコードして、それをまたバイト配列に戻します。
UTF8エンコードできなかった文字は、元のコードには戻らないので
元の配列と比較するとコードが異なっているのでUTF8に存在しない文字とみなす
という考え方で判定しています


【ソース例】

'チェックするUTF8文字のバイト配列
Dim chkbyte As Byte() = {Convert.ToInt16("E3", 16) _
, Convert.ToInt16("81", 16) _
, Convert.ToInt16("81", 16) _
, Convert.ToInt16("FF", 16) _
, Convert.ToInt16("00", 16) _
}

'UTF8にする
Dim dt As String
dt = System.Text.Encoding.UTF8.GetString(chkbyte)


'バイト配列に戻す
Dim re As Byte() = System.Text.Encoding.UTF8.GetBytes(dt)


'配列を比較
Dim isEqual As Boolean = DirectCast(chkbyte, IStructuralEquatable).Equals( _
re, StructuralComparisons.StructuralEqualityComparer)

'元のバイト配列と変換後のバイト配列が異なっていたらエラーとする
If isEqual = False Then
MsgBox(" utf文字コードエラー")
End If


実際にはファイルを読み込んでチェックしたりすると思いますが
その場合は、ファイルをバイト配列に読み込んでください。
posted by pltokyo at 11:33| Comment(0) | .NET

2014年04月16日

.NET用TCPソケット通信ライブラリ【Sock.dll】


.NET用TCPソケット通信ライブラリ【Sock.dll】

【機能】
・サーバーソケット/クライアントソケットの両方に対応
・非同期マルチスレッド対応のサーバーソケット
・クライアントソケットは送信だけではなく、サーバーソケットからの受信も可能
・接続、送信エラー時のリトライに対応(リトライ回数、間隔も指定可能)
・送受信時にイベントが発生するのでプログラミングが簡単

【動作環境】
.NET Framework 4

【制限】
・1回の送受信上限サイズは1024バイト
 ⇒送受信回数に制限は無いので、複数回に分け長電文を送受信することは可能

【使い方】
Sock.dllを参照設定に追加すれば使えます
VB.NETで作ったサンプルプログラムも同梱していますので参考にしてください(VisualBasic2010)
SockSample.exe起動 ⇒ 「ソケット開始」 ⇒ 「クライアントソケット表示」 ⇒ 「接続」⇒「送信」
で簡単なソケット送受信の動作が確認できます。

【使用条件】
・Sock.dllを使用したこと、または使用できなかったことに
 関連して生ずる一切の損害、トラブルに関していかなる責任も負いません。
・Sock.dllは商用利用可能です。自由にプログラムに組み込んで使ってください。
 ただし、Sock.dll単体での商用利用は禁止します
・転載などされる場合は元のアーカイブのままでお願いします

ダウンロード⇒.NET用TCPソケット通信ライブラリ【Sock.dll】
posted by pltokyo at 13:51| Comment(5) | .NET