旧コンテンツから引っ越し&古いソースをVisual Studio2017でリファクタ、ページはこちら
タグ: C#
定型テキスト変換ツール「Format Converter」を公開しました
仕事でgrepした結果をExcel等に落とし込む際、以前は使い捨てのPerlスクリプト等を組んでいました。が、毎回作るのが面倒になったんでWPFの復習も兼ねてアプリ化した次第です。ぶっちゃけやってる事は大した内容ではないです><
法則性のある行単位のテキストデータ変換に適しています。変換ルールはファイル化して再利用可能です。
今後は「バッチ処理」「出力文字コード指定」を対応予定です。
ダウンロードページでも掲載しております。
ダウンロード
対応事項
- セパレータ(タブ、カンマ、その他)、及び正規表現(要グルーピング指定)による抽出
- 変換ルールのファイル化
- クリップボードへのコピー
- 変換結果のファイル出力
使用例
スクショで何となくイメージ湧くかと思います^^;
正規表現はC#準拠ですのでこちらを参考ください。
C#で32bitアイコンファイル(.ico)を作成
C#には標準で「Icon」クラスがあり、アイコンファイルの出力を一応サポートしています。が、この方法では16色のアイコンしか出力出来ません。 なのでアイコンファイルのフォーマットを元に、ヘッダやデータ領域をバイナリ形式で書き出します。
ソースコードが長いのでポイントになりそうな箇所だけ一応説明入れていますが、読み飛ばしても問題無いと思います。 「使用例」のみですぐに使用出来るようにしたつもりです。
サンプルとしてWindowsフォーム形式の簡易アプリを入れています。ダウンロードページでも掲載しております。実装例の参考にどうぞ。
ダウンロード
対応事項
- 入力画像形式は「BMP」「GIF」「JPG」「PNG」「TIFF」となります。「32bit アルファチャンネル(透過)有り」に対応しています。
- 出力画像形式は「BMP」「PNG」形式となります。いずれも「32bit アルファチャンネル(透過)有り」に対応しています。
- 最大サイズは256×256(Windows Vista以降で表示可能)となります。
- 一つのアイコンファイルでサイズの違うアイコンをまとめて格納する「マルチアイコン」形式に対応しています。
- 1/4/8/16/24bitアイコン形式とマスクデータに対応しています。
使用例
以下に使用例を示します。「System.Drawing 名前空間」を使用していますので、コンソールアプリケーションの場合は「プロジェクト」→「参照の追加」→「.NET」タブ→「System.Drawing」を追加して下さい。 フォームアプリケーションの場合は初めから参照に含まれていますので特に設定不要です。使用するのは「IconMaker.cs」と「ColorQuantizer.cs」です。「ColorQuantizer.cs」は減色用のプログラムですので 直接は使用しません。プロジェクトへ追加するだけでOKです。
using System;
using IconMaker;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
I2IConverter i2ic = new I2IConverter();
i2ic.LoadImage("./Sample.png");
i2ic.ConvertInfoList.Add(new IconConvertInfo(EPictureFormat.PNG, 256, 256, EColorDepth.CD_32BIT));
i2ic.ConvertInfoList.Add(new IconConvertInfo(EPictureFormat.BMP, 128, 128, EColorDepth.CD_32BIT));
i2ic.ConvertInfoList.Add(new IconConvertInfo(EPictureFormat.BMP, 48, 48, EColorDepth.CD_32BIT));
i2ic.ConvertInfoList.Add(new IconConvertInfo(EPictureFormat.BMP, 32, 32, EColorDepth.CD_32BIT));
i2ic.ConvertInfoList.Add(new IconConvertInfo(EPictureFormat.BMP, 16, 16, EColorDepth.CD_32BIT));
i2ic.SaveIcon("./Sample.ico");
}
}
}
(10行目) まずインスタンスを作成します。
(11行目) ベース画像の読み込みを行います。画像ファイルのパスか、ストリームを指定します。
(12~16行目) アイコンファイルに含めるアイコンの「画像形式、幅、高さ、色数」を指定します。 「画像形式」は32bit時はPNGまたはBMP、それ以下の色数ではBMPにして下さい。また「幅、高さ」は同じ値にして下さい。
(17行目) アイコンファイルを保存します。
「IconConvertInfo」には他にも「Interpolation(画像の拡大縮小アルゴリズム)」「ErrorDiffusion(減色時の誤差拡散有無)」「TransparentThreshold(アルファマスク作成時の透過率)」が設定できます。
「Interpolation(画像の拡大縮小アルゴリズム)」はバイリニアやニアレストレイバーといったアルゴリズムが選択できます。
「ErrorDiffusion(減色時の誤差拡散有無)」をONにすることにより、256色以下に減色する場合にそこそこ自然(?)な減色が行えると思います。デフォルトは「ON」です。
「TransparentThreshold(アルファマスク作成時の透過率)」は設定値より小さい透過率をアルファマスクとして扱う設定です。デフォルトは「128」としています。
「IconMaker.cs」「ColorQuantizer.cs」共にソースコードが巨大化した為サンプルは載せていません。ソースコードは公開していますがコメントはあまり書いていませんので参考程度にお願いします。