座標位置の修正/マニュアル指定、画像表示時のラインサイズ、
縦横判定の範囲指定、特定の画像ウィンドウの非表示とか
⇒AutoPersCrop103.zip
マウス操作に関してはこの辺りを参考に
入出力とGUI マウスイベントを取得する - OpenCV-CookBook
OpenCVでアルファチャンネル付きpngを表示する - Qiita
てっきり半年ぐらい更新ないと思ってたら
AdvanceCOMP v1.22がリリースされてた
公式バイナリのコンパイラ変わった関係での修正っぽい
⇒advancecomp-1.22-windows-x64.zip
↓と同様にソースはここからで方法も同じ
※追記、1.23の更新はソースファイルの入れ忘れなのでバージョン表記の違いだけかな?
AdvanceCOMP v1.21がリリースされてた
ZIPファイルを少しでも小さいサイズにしたい時に使ってます
せっかくなので64bit版ビルドしてみた
ソースそのままだけど自分の環境だとx86版より少しだけ速い
⇒advancecomp-1.21-windows-x64.zip
OSSをWindows向けバイナリ作る上で細かいこと考えなくてよさそうな環境として
Git for Windows SDK 1.0.3をインストールしてみました
バッチファイルが自動実行されネットから各種ファイルをDLするみたい
最後の方のGit関係? のインストールでこけるのが謎だけど
今回の用途には関係ない部分なので気にしない
ソースファイルはリリースページのAdvanceCOMP v1.21
上から3番目の「advancecomp-1.21.tar.gz」をDLして解凍すればいいんだけど
「libdeflate\crc32_impl.h」ファイルが入ってなくてエラー出るので
その下の「Source code (zip)」もしくは「Source code (tar.gz)」から
該当ファイルをコピーする必要があります
後は対象のディレクトリまで移動して
CFLAGS="-O2 -Wall -fomit-frame-pointer -fno-strict-aliasing -fno-strict-overflow" CXXFLAGS="-O2 -Wall -fomit-frame-pointer -fno-strict-aliasing -fno-strict-overflow" LDFLAGS="-static -s" ./configure
make
make check
make checkで「Success!」が表示されれば問題ないはずmake
make check
チェック用の画像が何故かマッピー…?
参考にしました
AdvanceCOMPをMinGWでコンパイル - メモ
いくつかの色調補正やNL-Meansによるノイズ除去とか追加
レベル補正の動作が非常に胡散臭いというか
後で気づいたけど「ヒストグラム レンジ 拡張」で検索すればよかったのか…
⇒AutoPersCrop102.zip
対象物がまっすぐじゃなく歪んでる場合
5.5 [C#]本のページ綴じ部分が歪んだデジカメ画像を補正したい - 2chってどうよ? 雑用メモ
Page dewarping - Needlessly complex
このあたりの解説読むと面白いんだけど真似できるほどの知識もなく
そもそも 本のページなら片面ずつ浮かないようして正面撮影した方がよさげ?
それこそ常に決まった撮影位置、サイズだったら
Photoshopのアクションやスクリプトでなんとかした方が確実なんだろうけど
そういう意味では某非破壊スキャナーの付属ソフトの説明見る感じすごいなあ
本体とか別にいからその手の機能だけちょっと欲しい
と思ったらレビュー見ると結構微妙っぽいのか…
ひとつまえに書いてたAutoPersCrop
せっかくなのでVectorに登録しておこうと思って
同姓同名の人が既にいたとかで作者登録に数日余計にかかりましたが
7月8日に登録が完了し公開されました
7月14日に雑誌掲載依頼のメールが何故か来てたので
タダで雑誌貰えるならと必要事項を書いて返信したものの
その後特に連絡もなくどうなったのかなと思ったら
8月13日に現物が届きました
晋遊舎 Windows100% 2016年9月号の103ページに載ってました
せっかくなのでそれを使って画像の台形補正を試してみました
デフォルト値からの変更は-gblur=5にして出力




付属DVDの厚みで浮いているせいで上部のズレが特に大きい
対象物に余白があるならトリミングで誤魔化せますが今回の場合は無理そう
撮影時に直せるならできるだけまっすぐにしたほうが良さげ?
真正面から撮るのが一番いいんだけどそうすると今度は影の問題が…
今回使ってみてちょっとマズいところがいくつかあったので一応修正
基本的にバッチファイルで使っていたせいで全然気付かなかった…
⇒AutoPersCrop101.zip
Vectorの新着ソフトのページから見つけたんだと思うけど
こういうよく分からんものまで紹介するとか大変だなと思いましたまる
台形補正というとプロジェクターの話かというと今回は画像の話で
元は長方形のカメラで撮影した画像を真っ直ぐに補正するやつです
手作業でやるならPhotoshopの遠近法の切り抜きツールとか
もっと細かく補正するならワープ変形やレンズ補正などがあります
フリーソフトのGIMPとか他のソフトでも似たような機能があったはず
自動認識して切り抜き補正してくれるソフトはどういったものがあるのか
スマホやタブレットのアプリだと
Office LensやCamScannerあたりが有名なのかな?
Windows向けのソフトだとどういったものがあるのか探してみました
OCRソフトなどでもこの手の機能はありますが
体験版いくつか試した中では
文字認識がメインなためか文書ファイルとして保存はできても
そのまま画像として保存できなかったのが残念
画像として保存できるのは3つしか見つけられず
うち1つは既に販売終了してました
一応紹介しておくとAtizの「Snapter」です

もう1つはソースネクストの「ピタリ四角」です

「カメラなどで撮影した斜めの画像を、まっすぐに補正するソフト」
と紹介にありますが
ウィンドウサイズが変更できない
設定項目が色調補正のチェックボックス1つだけ
と個人的に微妙すぎるのでこれは買っちゃダメ
最後の1つはリバックの「RectAce」です

「デジカメをホワイトボードの撮影やスキャナ代わりに。歪曲補正にも対応」
設定項目も多く有料ソフトの中ではこれが一番よくできてました
背景が白い原稿の可読性を上げる色調補正は結構優秀
バッチ処理にリサイズ機能がないのが残念
32bit版しかないのでメモリが足りない場合はLAAのパッチ当てよう
問題は価格が1万以上とその値段ならもっとつけて欲しい機能が・・・
Vectorに置いてあるけどタイトルに体験版の表記もなく売る気あるのかな・・・
2009年からほぼ更新がないので今後のアプデなさそう
ちなみにiOS版も出してるみたいです
フリーウェアで良いのないのかなと思ったものの結局見つからず
その代わり検索する中でOpenCVのコードは結構引っかかりました
以下の2つの関数どちらかを使った方法です
輪郭を検出するfindContours関数
線分を検出するHoughLinesP関数
Harrisとか直接コーナー検出する方法もあるけど割愛
それらを参考に線分を検出する方法でとりあえず動くものを作ってみました
⇒AutoPersCrop100.zip
コマンドラインなのでわかりにくいかもしれないけど
一応OpenCVの標準GUIで画像の表示やトラックバーで調整できます
32bitと64bitで何故かトラックバーの動作が違います
色調補正機能は特にないです
Readmeに書くの忘れてたけど「-hvdeg」「-outline」はウィンドウ表示する際
追記で「,0,0」で縦ライン横ライン非表示、「,1,1」で表示になるはず
もちろん手動でやるより精度低いけど
それなりでいいならそこそこ使えるかと
誰かもっとちゃんとしたやつ作らないかな・・・
カメラで直撮りした場合だとスキャナとは違い
紙の浮きや近くの物の影が映り込むので
色調補正で影を補正する必要もあります
手作業でやるならマスクとるのが正攻法かと思いますが
アクションやスクリプトで一括でやるなら
Photoshopの場合残念ながらトーンカーブを使いこなせてないので
シャドウ・ハイライトを使う方法が自分としては手っ取り早いです
そこまで大きくない明暗差ならある程度均一化できます
フリーでも似たような機能が何かあったはず
※以前に上げたファイルのリンク切れてるみたいなので一応修正
Googleマップを大きいサイズのスクリーンショットで保存したい
以前はMap Grabberというフリーソフト使ってましたが
いかんせんキャプチャーに時間かかるのが面倒
一応他のサイトなんかだとまだまだ使えます
他の方法として見つけたのは大きく2つあって
一つはFirefoxのレスポンシブデザインビュー

ツール→Web開発→レスポンシブデザインビュー
ショートカットはCtrl+Shift+M
一番右のアイコンでpng形式で保存できる
別の形式やスクロールするサイトを保存したい場合はスクショのアドオンを使う
レスポンシブデザインビューそのものは開発ツールの一つで
バージョン15あたりからあったものの
プリセットの追加方法が手動でドラッグして大きさを変更するか
about:configのdevtools.responsiveUI.presetsに書き込むしかなく不便だった
バージョン33以降からは直接数値を入力して編集可能になった
似たような機能は他のWebブラウザでもあるけど
画面解像度より大きいスクショ用途に適したのはFirefoxだけっぽいのかな
で、もう一つはIEコンポーネントを使用したスクリーンショット可能なソフト
その中でもOnlineScreenは内容を確認しながら保存できる
作者さんのサイトは何年も前に死んでるので
WaybackMachineかココからダウンロード
jpg形式でしか保存できないのと設定が保存されないのが少し残念

IEコンポーネントを使用しているソフトはIEのバージョンに関係なく
互換性のためなのか知らないけどIE7の描画エンジン使ってるみたいなので
グーグルマップは最近まで見れてたけど今はIE8以降じゃないとダメになった
で、そのままだと使えないのでレジストリをいじる必要がある
IE11用レジストリ追加
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"OnlineScreen.exe"=dword:00002af8
IE11用レジストリ削除[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"OnlineScreen.exe"=dword:00002af8
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"OnlineScreen.exe"=-
10進数換算でIEのバージョンx1000の値入れておけばおk[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"OnlineScreen.exe"=-
詳しいことは「FEATURE_BROWSER_EMULATION」でググれば誰か解説してます
マーカーやルート必要ないならurl2bmpやSiteShoter、CrenaHtml2jpgとかでもおk
これらもIEコンポーネント使ってるソフトなので上記のレジストリの変更必要
サイズや回線状況にもよるけど、ウェイトは10〜20秒かけた方がいいかも
url2bmpの日本語化はWaybackMachineにまだ残ってるしググればミラーまだある
CrenaHtml2jpgはデフォルトがIE6扱いなのでUserAgent設定の変更も必要
Google Map Saverというそのものずばりなソフトあるけど正直使えないので省略
他には埋め込み用のサイズを変更する方法があるけどメンドいのでこれも省略
画像の最適化の話とか
JPEG形式の最適化はmozjpegがいいらしい
最新は3.1みたいだけど、バイナリ見つからないのビルドしてみた
mozjpeg-3.1-windows-x86.zip / mozjpeg-3.1-windows-x64.zip - cjpeg
cjpeg.exe -quality 95 input.bmp > output.jpg
cjpegは通常の不可逆圧縮と同じだけど画質に対してのサイズが小さいとかどこか間違えてるのかbmpとjpgは読み込めたけどgifとpngは無理だった
mozjpeg-3.1-windows-x86.zip / mozjpeg-3.1-windows-x64.zip - jpegtran
jpegtran.exe -outfile "output.jpg" -optimise -copy none "input.jpg"
jpegtranは無劣化でサイズを削れるとか新規でjpgファイルを作る場合はbmpで出力してcjpeg>jpegtranで良さそう
GIF形式に関してはそんなに調べてないけど減色するしかなさそうなのかな
アニメーションGIFは透過部分の最適化できるみたい
Gifsicle 1.87
gifsicle.exe -O3 <original.gif >compressed.gif
PNG形式は減色とパレットと圧縮について
pngquant 2.4.0
pngquant.exe --skip-if-larger --ext=.png --force --verbose --speed=1 256 input.png
減色256色なのでフルカラーの場合当然劣化するけどファイルサイズかなり減るpngrewrite 1.4.0
pngrewrite input.png output.png
パレットの最適化してるらしい近い色削ってるのかな?AdvanceCOMP 1.19 - advpng
advpng.exe -z -4 -i 15 input.png
Zopfliアルゴリズムでdeflate互換なのに圧縮率高いけどすごく時間かかるZopfli & ZopfliPNG KrzYmod v14
zopflipng.exe input.png output.png
本家Zopfliの改良版? 64bitAVX使ってみたけどどっちにしろ時間かかるZopfliに関して名前は見たことあったけどちゃんと調べてなくて
7zipのdeflateよりもサイズ小さいので結構びっくりした
AdvanceCOMP 1.19 - advzip
advzip.exe -z -k -4 -i 15 input.zip
既存のzipファイルの再圧縮に、もちろんこれも時間かかる新規の場合も複数のディレクトリを含むときにちょっとややこしいので
一度他のソフトで1つのZIPファイルにしてから再圧縮した方が楽
で、とりあえず作ったバッチファイルとか
そういえば減色ソフトのYukariがいつの間にか更新再開されてた
PNGのアルファ減色対応しないかな
WinPE 5.0 に日本語IME入れてみた話
実際に試したのはPE 5.0x64とx86にWin8.1x64IMEのみ
PE 4.0でもWin8のIME関連のファイルがあればおそらく使えるはず
各種日本語パッケージや日本語キーボードが設定済みであることが前提です
必要なIME関連のファイル
%WinDir%\IME\IMEJP\DICTS\IMJPDW.GRM
%WinDir%\IME\IMEJP\DICTS\IMJPEX.GRM
%WinDir%\IME\IMEJP\DICTS\IMJPGN.GRM
%WinDir%\IME\IMEJP\DICTS\IMJPNC.GRM
%WinDir%\IME\IMEJP\DICTS\IMJPPR.GRM
%WinDir%\IME\IMEJP\DICTS\IMJPST.DIC
%WinDir%\System32\ctfmon.exe
%WinDir%\System32\msctfime.ime
%WinDir%\System32\MsCtfMonitor.dll
%WinDir%\System32\msutb.dll
%WinDir%\System32\IME\IMEJP\IMJPAPI.DLL
%WinDir%\System32\IME\IMEJP\IMJPLMP.DLL
%WinDir%\System32\IME\IMEJP\IMJPTIP.DLL
%WinDir%\System32\IME\SHARED\IMEAPIS.DLL
%WinDir%\System32\IME\SHARED\IMELM.DLL
%WinDir%\System32\IME\SHARED\IMETIP.DLL
%WinDir%\System32\IME\SHARED\IMJKAPI.DLL
%WinDir%\System32\IME\SHARED\MSCAND20.DLL
%WinDir%\IME\IMEJP\DICTS\IMJPEX.GRM
%WinDir%\IME\IMEJP\DICTS\IMJPGN.GRM
%WinDir%\IME\IMEJP\DICTS\IMJPNC.GRM
%WinDir%\IME\IMEJP\DICTS\IMJPPR.GRM
%WinDir%\IME\IMEJP\DICTS\IMJPST.DIC
%WinDir%\System32\ctfmon.exe
%WinDir%\System32\msctfime.ime
%WinDir%\System32\MsCtfMonitor.dll
%WinDir%\System32\msutb.dll
%WinDir%\System32\IME\IMEJP\IMJPAPI.DLL
%WinDir%\System32\IME\IMEJP\IMJPLMP.DLL
%WinDir%\System32\IME\IMEJP\IMJPTIP.DLL
%WinDir%\System32\IME\SHARED\IMEAPIS.DLL
%WinDir%\System32\IME\SHARED\IMELM.DLL
%WinDir%\System32\IME\SHARED\IMETIP.DLL
%WinDir%\System32\IME\SHARED\IMJKAPI.DLL
%WinDir%\System32\IME\SHARED\MSCAND20.DLL
これら18ファイルをマウント中もしくは展開したPEの同様のディレクトリにコピー
x64環境でx86のPE作る場合はSysWOW64以下のIME関連のファイルをSystem32にコピー
IMEReg.cmd というファイル名のバッチファイルを作成し、PEのSystem32にコピー
@ECHO OFF
REGSVR32 /S %WinDir%\System32\MSUTB.DLL
REGSVR32 /S %WinDir%\System32\MsCtfMonitor.DLL
REGSVR32 /S %WinDir%\System32\IME\Shared\IMEAPIS.DLL
REGSVR32 /S %WinDir%\System32\IME\Shared\IMELM.DLL
REGSVR32 /S %WinDir%\System32\IME\Shared\IMETIP.DLL
REGSVR32 /S %WinDir%\System32\IME\Shared\IMJKAPI.DLL
REGSVR32 /S %WinDir%\System32\IME\Shared\MSCAND20.DLL
REGSVR32 /S %WinDir%\System32\IME\IMEJP\IMJPAPI.DLL
REGSVR32 /S %WinDir%\System32\IME\IMEJP\IMJPLMP.DLL
REGSVR32 /S %WinDir%\System32\IME\IMEJP\IMJPTIP.DLL
>nul (
REG ADD HKLM\Software\Microsoft\IME\15.0 /f
REG ADD HKLM\Software\Microsoft\IME\15.0\IMEJP /f
REG ADD HKLM\Software\Microsoft\IME\15.0\IMEJP\directories /f
REG ADD HKLM\Software\Microsoft\IME\15.0\IMEJP\directories /v "DictionaryPath" /t REG_EXPAND_SZ /d "%%SystemRoot%%\IME\IMEJP\Dicts" /f
REG ADD HKLM\Software\Microsoft\IME\15.0\IMEJP\directories /v "ModulePath" /t REG_EXPAND_SZ /d "%%SystemRoot%%\System32\IME\IMEJP" /f
REG ADD HKCU\Software\Microsoft\CTF\TIP\{03B5835F-F03C-411B-9CE2-AA23E1171E36} /f
REG ADD HKCU\Software\Microsoft\CTF\TIP\{03B5835F-F03C-411B-9CE2-AA23E1171E36}\LanguageProfile /f
REG ADD HKCU\Software\Microsoft\CTF\TIP\{03B5835F-F03C-411B-9CE2-AA23E1171E36}\LanguageProfile\0x00000411 /f
REG ADD HKCU\Software\Microsoft\CTF\TIP\{03B5835F-F03C-411B-9CE2-AA23E1171E36}\LanguageProfile\0x00000411\{A76C93D9-5523-4E90-AAFA-4DB112F9AC76} /f
REG ADD HKCU\Software\Microsoft\CTF\TIP\{03B5835F-F03C-411B-9CE2-AA23E1171E36}\LanguageProfile\0x00000411\{A76C93D9-5523-4E90-AAFA-4DB112F9AC76} /v "Enable" /t REG_DWORD /d 1 /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000411 /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31} /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 /v "CLSID" /d "{03B5835F-F03C-411B-9CE2-AA23E1171E36}" /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 /v "Profile" /d "{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}" /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 /v "KeyboardLayout" /t REG_DWORD /d 0 /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\Language /v "00000000" /d "00000411" /f
REG ADD HKCU\Software\Microsoft\CTF\HiddenDummyLayouts /v "00000411" /d "00000411" /f
REG ADD HKCU\Software\Microsoft\CTF\Assemblies\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31} /v "Default" /d "{03B5835F-F03C-411B-9CE2-AA23E1171E36}" /f
REG ADD HKCU\Software\Microsoft\CTF\Assemblies\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31} /v "Profile" /d "{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}" /f
REG ADD HKCU\Software\Microsoft\CTF\Assemblies\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31} /v "KeyboardLayout" /t REG_DWORD /d "04110411" /f
)
START CTFMON.EXE
REGSVR32 /S %WinDir%\System32\MSUTB.DLL
REGSVR32 /S %WinDir%\System32\MsCtfMonitor.DLL
REGSVR32 /S %WinDir%\System32\IME\Shared\IMEAPIS.DLL
REGSVR32 /S %WinDir%\System32\IME\Shared\IMELM.DLL
REGSVR32 /S %WinDir%\System32\IME\Shared\IMETIP.DLL
REGSVR32 /S %WinDir%\System32\IME\Shared\IMJKAPI.DLL
REGSVR32 /S %WinDir%\System32\IME\Shared\MSCAND20.DLL
REGSVR32 /S %WinDir%\System32\IME\IMEJP\IMJPAPI.DLL
REGSVR32 /S %WinDir%\System32\IME\IMEJP\IMJPLMP.DLL
REGSVR32 /S %WinDir%\System32\IME\IMEJP\IMJPTIP.DLL
>nul (
REG ADD HKLM\Software\Microsoft\IME\15.0 /f
REG ADD HKLM\Software\Microsoft\IME\15.0\IMEJP /f
REG ADD HKLM\Software\Microsoft\IME\15.0\IMEJP\directories /f
REG ADD HKLM\Software\Microsoft\IME\15.0\IMEJP\directories /v "DictionaryPath" /t REG_EXPAND_SZ /d "%%SystemRoot%%\IME\IMEJP\Dicts" /f
REG ADD HKLM\Software\Microsoft\IME\15.0\IMEJP\directories /v "ModulePath" /t REG_EXPAND_SZ /d "%%SystemRoot%%\System32\IME\IMEJP" /f
REG ADD HKCU\Software\Microsoft\CTF\TIP\{03B5835F-F03C-411B-9CE2-AA23E1171E36} /f
REG ADD HKCU\Software\Microsoft\CTF\TIP\{03B5835F-F03C-411B-9CE2-AA23E1171E36}\LanguageProfile /f
REG ADD HKCU\Software\Microsoft\CTF\TIP\{03B5835F-F03C-411B-9CE2-AA23E1171E36}\LanguageProfile\0x00000411 /f
REG ADD HKCU\Software\Microsoft\CTF\TIP\{03B5835F-F03C-411B-9CE2-AA23E1171E36}\LanguageProfile\0x00000411\{A76C93D9-5523-4E90-AAFA-4DB112F9AC76} /f
REG ADD HKCU\Software\Microsoft\CTF\TIP\{03B5835F-F03C-411B-9CE2-AA23E1171E36}\LanguageProfile\0x00000411\{A76C93D9-5523-4E90-AAFA-4DB112F9AC76} /v "Enable" /t REG_DWORD /d 1 /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000411 /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31} /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 /v "CLSID" /d "{03B5835F-F03C-411B-9CE2-AA23E1171E36}" /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 /v "Profile" /d "{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}" /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\AssemblyItem\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31}\00000000 /v "KeyboardLayout" /t REG_DWORD /d 0 /f
REG ADD HKCU\Software\Microsoft\CTF\SortOrder\Language /v "00000000" /d "00000411" /f
REG ADD HKCU\Software\Microsoft\CTF\HiddenDummyLayouts /v "00000411" /d "00000411" /f
REG ADD HKCU\Software\Microsoft\CTF\Assemblies\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31} /v "Default" /d "{03B5835F-F03C-411B-9CE2-AA23E1171E36}" /f
REG ADD HKCU\Software\Microsoft\CTF\Assemblies\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31} /v "Profile" /d "{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}" /f
REG ADD HKCU\Software\Microsoft\CTF\Assemblies\0x00000411\{34745C63-B2F0-4784-8B67-5E12C8701A31} /v "KeyboardLayout" /t REG_DWORD /d "04110411" /f
)
START CTFMON.EXE
Startnet.cmd に以下を追記(PEのSystem32にあるWpeinitのファイル)
Call IMEReg.cmd
最後に ブートWIM形式に固めてCDなりUSBメモリに書き込めばおk
バッチファイル書こうかと思ったけど 選択するPEやOSの違いで手作業入るので省略
レジストリ関係というかREGSVR32の行はもう少し削れるかも
Input Method Editor (IME) を Windows PE に追加する
WinPE3.0と2.0なら↑に載っているバッチファイルを使えば
ファイル構成は同じなのでそれぞれWin7とVistaのIMEを使うことができました
ちなみにMS公式の情報なのにバッチファイルに改行が入ってなくてエラー出るので注意
で、MS公式のここを見ると
Windows PE 4.0 以降では Input Method Editor (IME) は追加できません
「現時点では、Windows PE 4.0 以降の Windows PE に Input Method Editor (IME) を追加する予定はありません。」
などとのたまっておられるので、他に情報ないか探してみるとありました。
韓国語のIMEをPE4.0に入れてるページを見つけたもののハングルが読めない
しょうがないので英語で何かないか探してみると
WinbuilderのWin7PESE〜Win8.1SE用の韓国語IMEスクリプトがあるのに気づく
灯台下暗しというか以前にダウンロードしたものの中身を見ていなかった
それを見ながら日本語用に合わせて試行錯誤してみたわけです
ファイル構成やレジストリも以前のバージョン用のものが結構使いまわしできました
言語バー非表示のみとか、いろいろいい加減なものですがこっちも置いておきます
Win8.1SE用の日本語IMEのスクリプト(改変元Korean_IME.script)
⇒Japanese_IMEforWin8.1SE.script.txt
Win7SE用の日本語IMEのスクリプト(改変元JapaneseIMEv.script、WOW64では動かないかも)
⇒JapaneseIMEforWin7PESE.script.txt
なんでわざわざPE4.0以降で作ったのかというとをUEFIセキュアブート対応してるからです
ブログの方が楽だと思いつつ、わざわざ引越しするほど更新もしてないっていう
Windows7新時代:第12回 使い勝手が大幅に向上したWindows7のワイヤレス機能 (2/3) - @IT
Win7以降のSoftAP機能ですごい久々に3DSをネットに繋いだ話
を2月に書こうとして忘れていた。
それはともかく、PDFからテキスト抽出するのにアレコレした話
フリーソフトいくつか試してある程度レイアウトに再現性のある
Xpdfのpdftotextを使うことに
http://www.foolabs.com/xpdf/
無駄に半角スペース多いけど、1行なら表もズレないのでわりと助かった。
使い方はここのページの解説がわかりやすかった
PDFからテキストを抽出する - ふなWiki
半角全角の項に関しては英数のみで
半角カナの場合は該当箇所を「ff61 ff9f a1」に書き換えればおk
これで解決したと思ってPDFと見比べて、波ダッシュ問題というのを知る
だったらと開き直ってCP932用のファイル作ってみた
⇒CP932.unicodeMap
文字コード表はUnicode Consortiumのcp932 to Unicode tableから
それと他環境や存在しない文字の変換もそれっぽくなるように↓の変換表も追記
UTF-8 → cp932(Shift_JIS)変換表 - fudist
連番部分は省略表記してサイズ縮められるけど簡単な方法がわからないので放置
わざわざ作ったけど結論としては、
特に理由がなければUTF-8で出力するのが正解、 メンドくさくないし
ちなみにサロゲートペアには非対応っぽい?
あと、今回初めて知ったちょっと困ったこととして
ファイル名に全角スペースが含まれているとバッチファイルにうまくパスを渡せない
対処法としてはパスに1つでも半角スペースが含まれていればいいので、
フォルダ名を変更して半角スペース入れとけばおkだった
セミコロンやカンマなどの記号の場合も同様の方法で対処可能
ファイル名に全角スペースをまず使ったことなかったので普通に知らなくてびっくりした
Office2010のSP2が出たのが去年の7月で今更の話になるけど
メイン環境のOSもWinXP→8→7と変わってそれにあたり
新規インストールするので改めて調べてみたら解決したのでちょっとまとめ
通常のSP2の統合についてはSP2のインストーラを展開して
mspファイルをUpdatesフォルダにコピーすればいいんだけど
「proof-ja-jp.msp」「proof-en-us.msp」
以外の言語の「proof-XX-XX.msp」はUpdatesフォルダに入れなくてもよさそう?
で、SP2の統合インストールする時に↓の問題あるので困った
■Office2010SP2の適用後インストールされていないOffice2010製品が追加される動作について
解決法としてはKB2879953も一緒に適用すればいいんだけどファイルの配置が問題でした
■Update to Office 2010 SP1 to prevent unintentional installation of SharePoint Workspace - Office Updates
SP1の時も似たような問題あったので↑の解決法が載ってました
KB2598245がKB2879953になっただけで同じ方法
office2010-kb2879953-fullfile-x86-glb.exe /extract:<path>
※<path>は展開先のディレクトリ
で展開した後の
「pre_rmaddlocal-x-none.msp」「osetup.dll」
2つのファイルをUpdatesフォルダに入れるだけ、それだけ
この問題に関して調べてもあまり出てこない理由としては
100MBにも満たない無駄ファイルがインストールされるだけで使用上まったく問題ない
気になるなら個別にアンインストールすればいいだけだからなのかなーと
カスタムインストールに関しては
TechNetにあるOffice2010のカスタマイズについてのページ見とけばよさげ
同ページのUpdatesフォルダに関するとこ見たせいで無駄に時間かかってたり
WinXPやOffice2003のサポートもうすぐ切れるし、
修正ファイルは以前のバージョンも置いてあるから心配してないけど
認証鯖の扱いがどうなるのかちょっと気になります
ちなみにサポート期間が切れたソフトウェアでも
会社によっては認証解除パッチ配布してたりする場合があるので
ちゃんとサポートページ見た方がよかったりします

とっくに明けてます
「atimpenc.dll/atimpenc64.dll(ATI MPEG Encoder)」の各バージョンとURL
11までは「AVIVO64.msi(ATI AVIVO Codecs)」
12以降は「AVT64.msi(AMD Accelerated Video Transcoding)」に入ってます
8.11 (9.15.0.20713)
http://www2.ati.com/drivers/8-11_vista32-64_xcode_70231.exe
10.3 (10.12.0.302)
http://www2.ati.com/drivers/10-3_vista_win7_32-64_xcode.exe
VC++ 2008
11.12 (11.7.0.11109)
http://www2.ati.com/drivers/11-12_vista_win7_32-64_xcode.exe
VC++ 2010
13.4 (12.10.0.30328)
http://www2.ati.com/drivers/13-4_win7_win8_64_dd_ccc_whql.exe
VC++ 2010
14.12 (13.30.0.41120)
http://www2.ati.com/drivers/amd-catalyst-omega-14.12-with-dotnet45-win7-64bit.exe
VC++ 2012
15.6b (13.30.0.50620)
http://www2.ati.com/drivers/beta/amd-catalyst-15.6-beta-software-suite-win7-64bit-june22.exe
VC++ 2012
※15.6bで終了みたいなので一応追記
フィルタだけ登録する場合は各VCランタイムと.net 3.5のインストールが必要
10と11に関しては2008と2010どっちでも登録できたり、11までは2.0だけでもいけるのかな
13.9は「msvcp110.dll」と「msvcr110.dll」を同じディレクトリに置けば登録できる?
Catalyst12以降はXP用のパッケージに入ってないものの、
最終対応バージョンの13.4まではXPでも何故か使えるみたい
それ以降はWin7じゃないと無理だった、Vistaはどうなんだろ?
で、何日か前まではURL直リンクでもDL出来てたのが対策されてた
AMD.comのリファラ送信しろよ、なページに飛ばされます
普通はダウンローダ使えば済む話だけど
ブラウザ上だけでダウンロードする方法として
まずAMDのサイトどこでもいいので開いて
Webページをブラウザ上で編集できるブックマークレット
で編集モードをONにして、DLしたいURLをコピペしてからOFFにする
リンクなしのURLをクリッカブルにするブックマークレット
でURLをリンク化して、クリックしてダウンロードする
ファイルのURL分かってるのに、DLページが分からない時に使える方法になるのかな?
Firefox使ってるなら「RefControl」でリファラ偽装できるので、何かと便利です
ブックマークレットのコピペ元
つめみがきこ JavaScript WEBページ 編集 ブラウザ上で編集
ASCII.jp:iPhone 3Gで使える! ブックマークレット大辞典
SDカード型USBメモリといえば
SandiskのSD PLUSシリーズとか、他にもいくつかのメーカー出してたような気がします


amazonの画像の日付みたら2007年と結構前なのか
海外の通販サイトだとまだ売ってるけど、日本はもう売ってないのかな
で、これのmicroSD版があるのを最近まで知らなかった
SD版と違ってmicroSDなら差し替えできるし、
現状だと32GBまで、相性次第で64GBまで使える
ちょっと欲しくなったので調べてみた
今はTIMELYってトコだけ売ってるみたいで


この手の商品は4,5年前からいくつかあったらしい、サンワサプライやA-DATAとか
USB部分を削って、ノートPCのSDスロットに埋め込む使い方もあるみたいで
ただ、この商品だといちいちキャップ外すのメンドそうだし、確実になくすと思い
他に代替品ないのかなと探してみると中国の通販サイトにありました
キャップがいらなくて、そのままSDカードサイズのです
1個で$6.90と10個セットで$22.00、
100個、200個、400個セットもあったけど流石に選択肢にも入らない
2,3個は欲しいので10個セットの方ポチって一週間ちょっと待って届いたのがコレ↓

左から、ケース、表面、裏面、実際にUSB接続した時には大体裏側になる残念なLED
通信中はLED光るし、裏側でも点滅してる時は意外と分かりやすい
SDカードとして使う時は光りません
で、microSDHC 16GB Class10でのスコア↓

カード相応のスピード出てて一安心、リーダー側が足を引っ張ってなさそう
他に手持ちのSD機器でも一通り確認したけど問題なく、何故か不良品が一つもなかった
中華クオリティはどうしたんだ…?
一つだけ気になった点としては
USBポート側が抜き差しでゆるゆるになってると認識しにくい?
端子の裏側にテープ貼って微妙に厚みもたせればいけるっぽいけど
まぁ別のポートに挿せば済む話で
個人的には満足してるし、いい買い物したと思うけど
実際の所、SDカードはデジカメやノートPCでしか使ってないので
あれば便利かもしれないけど、無くても別に困らない類のモノでして…
で、後になって1個あたり$3.10のトコ見つけたというか、こっちでよかったな…
埋め込み画像の無いPSDファイルをエクスプローラでサムネ表示させる方法について調べてみる
Photoshopのデフォ設定だと、「プレビュー画像」の項目が必ず保存になっているので、常にPSDに埋め込み画像が入ってるけど、SAIでPSD形式で保存した場合埋め込み画像がない
PSDをサムネ表示させるソフトで埋め込み画像を表示するのと、中身をちゃんと読み込んで表示するのとで2つのパターンがあって、今回は後者で良さげなのないかなとググってみた
PSDをサムネ表示させるソフトとしては、
psicon.dll - PhotoshopのCS以前に入ってたもので工夫すれば64bitでも動くらしい、埋め込み表示
SPI Extractor - エクスプローラーの縮小表示をSusie plug-in対応にするものでPSDのプラグインと組み合わせる、キャッシュを保持してくれないので大きいサイズのファイルだと毎回読み込みに時間がかかる
ThumbView - キャッシュを保持してくれないので以下略
psd-thumbnail-codec - 重すぎてエクスプローラ固まったのでよく分からない
SageThumbs - 64bit対応、埋め込み表示
MysticThumbs - 64bit対応、埋め込み表示と両対応? $25
PSDCodec.dll - Expression Blend 3に入ってるもの
FastPictureViewer Codec Pack - 64bit対応、中身読み込むタイプだとサムネ表示まで一番速いものの、微妙な点としてWindows Photo Viewerの対応うたってるのにサイズ大きいと表示されないっぽい、$19.95の所今なら$14.95
Ardfry PSD Codec - 64bit対応、↑と違い大きいサイズのファイルでもちゃんと表示される、$19.95
で、結論としては
XPなら「MysticThumbs」、32bitVista以降なら「PSDCodec.dll」、64bitVista以降なら「Adrfry PSD Codec」になりそう、64bitでフリーのあればよかったけど結局見つからず、埋め込み画像有りのPSDなら「psicon.dll」「SageThumbs」「フリー版のMysticThumbs(ver.1.98)」とか選択肢多いのに…
逆に埋め込み画像ありのPSDにするために、Photoshopで上書き保存するだけのドロップレット作るとかメドイ方法もあるにはある
ちなみにWMFやEMFのサムネ表示は「emfplugin」使えばおk
まぁ各種画像形式に対応したビューア使うのが正解、Windowsのバージョンに左右されないし…
前も似たような内容書いたような気もするけど、改めて調べてみたので

Excel 2007 図形の塗りつぶしパターン(改) - 実装 - HARD DAY'S NIGHT
↑の「PatternFill2.xlam」を元にして
Excel Blog - Chart Pattern Fills
PowerPoint2007で図形の塗りつぶしにパターンを使いたい - マイクロソフト コミュニティ
を参考に改変してクラシックカラーと塗りつぶしパターンを出来るだけ図形やグラフなんかに適用するアドインをエクセルとワードとパワポ用に作ってみた
⇒PFCC.zip
パワポ用は残念ながら図形やテキストボックスのみですが…エクセルは無駄に使ったこともないセルのパターン機能とかもつけてみた、エラー処理とかいい加減で、とりあえず動くかの確認だけしかやってないので…ワードの文字の背景色塗りつぶしは改行はさむと通常と違う表示になったりかなりうさんくさい動きします、色の塗りつぶしの時に単色にさせてないのはわざとです、必要な場合は一度標準の塗りつぶし使うかコードに「〜.Solid」とか足せばいいはず、後で気づいたけど2007から追加された6つのパターンですがWORDだと使えないみたいで直すのメドいな…
リボンのカスタマイズに関しては↑のサイトと
Office 2007/2010・リボンのカスタマイズ 初心者備忘録
Ribbon - 陶山栄一のホームページ
ここの2つと、そのリンク先見ればなんとかなりました
エディタは「Office Ribbon Editor」使うのが良さげ、日本語で記述できるのと何より.relsファイルの書き換えをやってくれるので楽、 あと何故か最新版が公式のリンクにない
塗りつぶしパターンのVBAでの処理は↓見れば分かるけど、
12.11 オートシェイプ(図形)の塗りつぶしパターンと色を設定する - Fill.BackColorプロパティとFill.Patternedメソッド - Excel VBA Tips - Happy! Happy! Island
値が連番だから、ギャラリーの読み込み順をそのまま利用しててなるほどなぁと
エクセルのVBAに関してはこの手の講座がすぐ見つかるけど、ワードとパワポに関しては普通に日本語でググってもあんまり出てこないので、VBEでのSelection.以下の候補ワードを試行錯誤しつつひたすらググったけど普通はどうやるんだろ、オブジェクトブラウザだけ見ても全然分からん…
2007以降の形式はzip圧縮したXMLファイルとかなので再圧縮したらファイルサイズ縮むのかなと調べたら7-Zipの公式に載ってるのか、バッチファイル間違ってるけど
xlsxやpptxファイルの閲覧、再圧縮 | 7-Zip
今回の場合、一度7-Zipで再圧縮したものをOfficeで開いてから保存すると一番サイズが縮んだけど、どうするのが正解なんだろ?
せっかくなので「クラシックスタイルメニュー」のタブにも追加しようとしたけど、既存のカスタムタブ上に別のファイルからグループを追加するのは、どっちにしろ既存のファイルも書き換える必要があるっぽい? 日本語だとこの辺とか、メンドそうなんでクイックアクセスツールバーに追加でいいかなと…そもそもリボンカスタマイズやってみたかっただけで実際のトコそんなに使わな
MS-Office2013発売されましたが、それより前にPreview版を試そうとして、いまだにしぶとくXP使ってる所為で必要環境満たしてないので当然使えなかったというか、さすがに今年中に7にします…
で、懲りずに1コ前の話の続きを書くと、
・バッチファイルの文字コードは?: Windows Script Programming
実際のところShift_JISのみでしか使えないと考えた方がいいみたいで、だったらS_JISに一度変換してから元に戻す方法だとどうなるか考えてみる
この時点で条件として、
依存文字が含まれないテキストのみ、含まれると「?」に変換される
改行コードはCR+LF固定、他の形式でも変換される、保持した状態でも多分いけるだろうけど後で編集するときメンドそうなので
の2つで
次に文字コードの判定どうするかとググってみると
・DetectEncoding - utaro
WSH(javascript)で作った文字コード判別プログラムとありますがシンプルイズベストというか判定結果だけ欲しかったので改変する必要もなくデフォ環境で動くのがすごく助かる
と思いきや2byte文字がなくて判定値が同じ場合、例えば日本語の無いUTF-8(BOM無し)とShift_JISに違いはないとか、判定結果としてどれを優先するかは「encodingdetector.js」ファイルの最初のトコを必要に応じて順番変える必要あるかも、変換時の無駄な処理を省くだけで結果は変わらないですが
今回は使わなかったけど同サイトの IndentHtmlってのも文字コード、改行コードの判定変換部分だけ切り出せばかなり便利そうな
で、判定した文字コードを元にS-JISに変換する
・iconv.CMD : Vector
この中のテキストに詳しい事書いてたので省略しますが、Unicode、UTF-7、UTF-8、シフトJIS、JIS、EUC-JPの相互変換とUnicodeLEのBOMについて書いてあります
判定と変換を合わせてどの文字コードが使えるかというと、5つあるけど実質3つ?
EUC-JP、ISO-2022-JP(JIS)、UTF-8(BOM無し)、UTF-16LE(BOM無し)、UTF-16LE(BOM有り(Unicode))、BOM有りのUTF-8はバッチファイルだと外部ファイル用意して結合する必要ありそうなので除外
で、文字コード判定→S_JIS変換の後は前のとほぼ同じで、追記でS-JISから元の文字コードに変換する記述を入れればおkじゃないかな多分
実際に使う事は無いような気がするので工程を書いて個別に動作確認しただけですが、バッチファイル1つでテキストファイル出力をどこまでできるか考えてみただけ
テキストファイルをドラッグ&ドロップで読み込んで、そのテキストファイルを作成するバッチファイルを作成するバッチファイルみたいな何か、ニホンゴムズカシイ
textoutput.bat
@echo off
:LOOP
if "%~1"=="" goto :EOF
cd /d "%~dp1"
> tmpfile type "%~1"
rem cscript //nologo "%~dp0textoutput.vbs" "%~dp1tmpfile"
> "%~n1.bat" echo.@echo off
>> "%~n1.bat" echo.cd /d ^"%%~dp0^"
>> "%~n1.bat" echo.^> "%~nx1" ^(
for /f "tokens=1* delims=:" %%a in ('findstr /n "^" tmpfile') do (
>> "%~n1.bat" echo.echo.%%b
)
>> "%~n1.bat" echo.^)
del tmpfile
shift /1
goto LOOP
:LOOP
if "%~1"=="" goto :EOF
cd /d "%~dp1"
> tmpfile type "%~1"
rem cscript //nologo "%~dp0textoutput.vbs" "%~dp1tmpfile"
> "%~n1.bat" echo.@echo off
>> "%~n1.bat" echo.cd /d ^"%%~dp0^"
>> "%~n1.bat" echo.^> "%~nx1" ^(
for /f "tokens=1* delims=:" %%a in ('findstr /n "^" tmpfile') do (
>> "%~n1.bat" echo.echo.%%b
)
>> "%~n1.bat" echo.^)
del tmpfile
shift /1
goto LOOP
「%~nx1」を「%~1」にして絶対パスで動作させた方がいい場合もあるかな
forコマンドのfindstrを外した記述にすれば通常通り空行はスキップされます
上記で大半のテキスト出力は動作するものの、バッチファイルでのechoコマンドの場合は以下の特殊記号をエスケープする必要があるっぽい?
「^→^^」「"→^"」「<→^<」「>^>」「(^→(」「)→^)」「&→^&」「|→^|」「%→%%」+区切り文字「:→^:」
バッチファイルで文字列置換すると確実にメンドそうというか、実際にやってみると「setlocal ENABLEDELAYEDEXPANSION」で環境変数の遅延展開できるようにして「set b=!a:^^=^^^^!」とかで特殊文字も置換できたけど、今度はパスや文字列に「!」が含まれているとエラーが出たり文字消えるっぽいし、callでの遅延展開でも消える文字あるしで結局どうやるのか分からなかったり、そもそも行頭に区切り文字「:」があった場合消えるし
仕方ないのでテキトーにググって見つけたVBScriptをコピペ改変して誤魔化した
「"」だけChr(34)で置き換えて使うのと、replace(strLine, ":", "^:", 1, 1)で行頭文字だけ変換するのに注意したぐらい?
具体的にどういう時に使うかというと、
「Settings.ini」みたいな設定ファイルを複数パターンで使いたい時に上書きコピーするだけの用途で、BATファイルを後で見直した時に分かりやすい、それだけ
なんでわざわざ書いたかというと、Windowsのバッチファイルで空行を保持した状態でテキストを読み込んで、行末に空白スペース残さずにリダイレクトする方法を知らなかったわけで
結局VBS使うんだったらそっちだけ使えばよかったんじゃないかという結論?
textoutput2.vbs
Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
srcPath = objArgs(I)
savPath = objFSO.GetParentFolderName(srcPath) & "\" & objFSO.GetBaseName(srcPath) & ".bat"
tmpPath = objFSO.GetParentFolderName(srcPath) & "\" & objFSO.GetTempName
Set objSrcFile = objFSO.OpenTextFile _
(srcPath, 1, False)
Set objTmpFile = objFSO.OpenTextFile _
(tmpPath, 2, True)
objTmpFile.WriteLine "@echo off"
objTmpFile.WriteLine "cd /d ""%~dp0"""
objTmpFile.WriteLine "> """ & objFSO.GetFileName(srcPath) & """ (" 'ファイル名のみ
'objTmpFile.WriteLine "> """ & srcPath & """ (" 'フルパス
Do Until objSrcFile.AtEndOfStream
strLine = objSrcFile.Readline
strLine = replace(strLine, "^", "^^") '置換文字列
strLine = replace(strLine, Chr(34), "^" & Chr(34))
strLine = replace(strLine, "<", "^<")
strLine = replace(strLine, ">", "^>")
strLine = replace(strLine, "(", "^)")
strLine = replace(strLine, ")", "^)")
strLine = replace(strLine, "&", "^&")
strLine = replace(strLine, "|", "^|")
strLine = replace(strLine, "%", "%%")
strLine = "echo." & strLine
objTmpFile.WriteLine strLine
Loop
objTmpFile.WriteLine ")"
objSrcFile.Close
objTmpFile.Close
If objFSO.fileExists(savPath) then
objFSO.DeleteFile savPath
End If
objFSO.MoveFile tmpPath, savPath
Set objFSO = Nothing
Next
For I = 0 to objArgs.Count - 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
srcPath = objArgs(I)
savPath = objFSO.GetParentFolderName(srcPath) & "\" & objFSO.GetBaseName(srcPath) & ".bat"
tmpPath = objFSO.GetParentFolderName(srcPath) & "\" & objFSO.GetTempName
Set objSrcFile = objFSO.OpenTextFile _
(srcPath, 1, False)
Set objTmpFile = objFSO.OpenTextFile _
(tmpPath, 2, True)
objTmpFile.WriteLine "@echo off"
objTmpFile.WriteLine "cd /d ""%~dp0"""
objTmpFile.WriteLine "> """ & objFSO.GetFileName(srcPath) & """ (" 'ファイル名のみ
'objTmpFile.WriteLine "> """ & srcPath & """ (" 'フルパス
Do Until objSrcFile.AtEndOfStream
strLine = objSrcFile.Readline
strLine = replace(strLine, "^", "^^") '置換文字列
strLine = replace(strLine, Chr(34), "^" & Chr(34))
strLine = replace(strLine, "<", "^<")
strLine = replace(strLine, ">", "^>")
strLine = replace(strLine, "(", "^)")
strLine = replace(strLine, ")", "^)")
strLine = replace(strLine, "&", "^&")
strLine = replace(strLine, "|", "^|")
strLine = replace(strLine, "%", "%%")
strLine = "echo." & strLine
objTmpFile.WriteLine strLine
Loop
objTmpFile.WriteLine ")"
objSrcFile.Close
objTmpFile.Close
If objFSO.fileExists(savPath) then
objFSO.DeleteFile savPath
End If
objFSO.MoveFile tmpPath, savPath
Set objFSO = Nothing
Next
バッチファイルの方だと結果的にtypeコマンドでUnicode→Shift_JIS変換されてるみたいだけど(対応してない文字は?になる)、 ↑のVBSの場合S_JIS以外だと文字化け起こすのでADODB.Streamとか使えばいいらしいけど 最終的にバッチファイルでS_JISで出力されるので、そもそもS-JIS以外のファイルに使わない方がいいハズ
S_JIS以外のバッチファイルはCHCPとかでググって下さい、うまく出来るか知りませんが
実際に使った場合だと特殊文字含まなかったし、文字コードや改行コードにBOMとかも考えるようなアレじゃないと思うのでこのへんで止めとこう
参考にしたページとか
・リダイレクトの記述位置 - CMD.EXE TIPs
・for /f:空行を省略せずそのまま読み込みたい (DOSプロンプト活用相談室LOG
・cmd.exe のコマンドラインの仕様を解析してみた - 永遠に未完成
・テキスト置換の自動化 - ドラッグ&ドロップ操作での一括置換
・環境変数を遅延展開する第3の方法とは?: Windows Script Programming
・cmd.exeとchcp.comだけで、文字コード(Unicode、UTF-8、UTF-7、JIS、EUC-JP、SJIS)を変換する!: Windows Script Programming

バイタル正常
せっかくなのでEMF(拡張メタファイル)について調べた事をだらだらと
結局、EMFのDPI値、解像度を変更する方法がわからなかったり、
普通のサンプルコードに載ってる方法だと画面解像度を元に作成されるので
プリンタのHDC取得とかで高解像度にはなるかもだけど
BitmapのSetResolutionメソッドみたいに簡単なのないのかなぁ
まずEMF形式で保存する方法自体が他のラスター形式と違って特殊だし…
ついでに調べてただけなので別に困ることはないけど
MS-OfficeでEMF形式で保存する場合
プリンタがインストールされてない環境だと画面解像度が、
インストールされてる場合プリンタ解像度を元に作成されるみたいで
てことは、前に書いた720DPIってのはプリンタ解像度がそうなってるからであって
古いプリンタドライバがインストールされてる環境だと360DPIだったりしました
こうなると環境依存が激しく、画一的に保存できないっぽいのかな?
ラスター画像を含んだEMFファイルの場合で困りそうだけど
パワポで図として保存するスライドの解像度を変更する方法だと307dpiまでしか
設定できないみたいで試さなかったけど、ここの値がどう影響するんだろ?
で、meta2jpegのソースをもうちょっとだけイジって
グレースケール変換と透過PNG用に透過保持と縦横比保持のオプション追加で、
⇒m2jJP104.zip
グレスケは24bitRGBで保存されます
8bitでも作れるけど、保存形式によっては24bitになったりするらしいので
アルファチャンネル保持は背景を白で塗りつぶさなくしただけですが
いちお書いとくとGDI+でのJPG保存はあまりオススメしません、画質的な意味で
そもそも白と黒の文字データだけのEMF変換してなんで文字ふちに青が出るのか…?
あと、他のソフトからOfficeに張り付けるためにEMFを出力する方法として
クリップボード経由なら直接形式を指定すれば貼り付けられますが
ローカルに保存する方法としては、
Enhanced Metafile PickerやWMFCopyやcb2emfやClipEMFとかいっぱいある
メタコンはピクセルやパーセント指定でサイズ変更して変換できるみたいですが
コマンドライン版の方はパーセント指定のみっぽいです
メタファイルをEPSに変換するWMF2EPSやMetafileToEPSConverterでもできます
WMF2EPSはリサイズ機能もついてるみたい
もひとつはプリンタ経由なんだけど、ソフトやドライバによってうまくできない場合も、
スプールファイル変換ツールはプリントジョブのスプールファイルを横取りして
EMFに変換してくれるもので、最近の環境でも問題なく動きます
プリンタドライバによってスプールファイルのサイズが違うのが難点といえば難点ですが、
逆に言えばそのプリンタドライバでのレイアウトのプレビューができるので便利
ちなみに共有プリンタをインストールしてるとジョブキャンセルできないので
そういう場合はDeletePrintSpoolerと併用すればおkです
EmfPrinterは自分の環境じゃ動かなかったのでパス
MBLabSoft EMP Printerは32bit環境ならWin7でもギリギリ動いたけどこれもパス
動作にはBorland C++Builder6 ランタイムが必要です
最後にTwo PilotsのEMF Virtual Printer Exampleです
開発者向けの仮想プリンタのSDKを販売してるトコのデモプログラムで、
他の形式に変換する場合はデモ版の文字が入ってて、それは当然なのに
何故かEMFで出力するだけなら特に制約もなく使用期限も今の所無いような…?
保存場所が固定なのと、ファイル名も指定できないのが難点
これとスプールファイル変換ツール併用すればジョブファイル名で保存されるし
ちゃんと用紙サイズ通りのEMFが出力される
と思ってたけど、用紙サイズに引き伸ばしてるだけで余白が考慮されてない…?
EMFに限らず、ベクター画像を変換する時に困る要素として
影なんかの半透明の情報があるとうまくできない事があったりなかったり
1コ前の話の続きで、他にもないか模索してたり
MS-Officeのグラフやオートシェイプなんかを600dpiのjpgファイルで保存できないか、です
Ghostscript使う方法で
:PDFをEPSに変換
gswin32c -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=epswrite -r9600 -sOutputFile="%~n1-%%03d.eps" "%~nx1"
:epstoolでBoundingBoxを修正
epstool --copy --bbox "%~nx1" "Fixed_%~nx1"
:CropEPSオプションつけてJPGに変換
gswin32c -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=jpeg -dJPEGQ=100 -dEPSCrop -r600 -sOutputFile="%~n1.jpg" "%~nx1"
トリミングの手間が省けるので1つの方法ではあるのかな?gswin32c -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=epswrite -r9600 -sOutputFile="%~n1-%%03d.eps" "%~nx1"
:epstoolでBoundingBoxを修正
epstool --copy --bbox "%~nx1" "Fixed_%~nx1"
:CropEPSオプションつけてJPGに変換
gswin32c -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=jpeg -dJPEGQ=100 -dEPSCrop -r600 -sOutputFile="%~n1.jpg" "%~nx1"
ただ、いろいろインストールする必要があるのでこれもスルー
あと、ImageMagickに同梱されてるemfplus.exeなんだけど
このあたり読むと分かるけど、これも解像度指定できないっぽい?
bmpやpngで出力できるみたいだけど、別にmeta2jpegあるしスルー
で、
「あれ? 唯一ソースファイルあるmeta2jpeg改変すればいいんじゃ…?」と
VC++ 2010 Expressダウンロードして、ソースを3ヶ所ほど修正してビルド
修正箇所をあげると、
for文の中での変数の宣言あるけど、この後も使うので外に出す
int i;
for (i = optind; i < argc - 1; ++i)
リソースファイルで必要なヘッダーファイルが無いので書き換えfor (i = optind; i < argc - 1; ++i)
//#include "afxres.h"
#include <windows.h>
#define IDC_STATIC -1
int main()の後に、#include <windows.h>
#define IDC_STATIC -1
std::locale::global(std::locale("japanese"));
これでほとんどの日本語パスも問題なく読めるようにバイナリで置くのもどうかと思ったので無駄にパッチファイルで
⇒m2jJP104.zip
バージョン1.0.4.にパッチあてればおk
どこからでもemf変換できるのでバッチファイルがこうなった
@echo off
:ploop
if "%~1"=="" goto end
if /i "%~x1" equ ".emf" goto loop
if /i "%~x1" equ ".wmf" goto loop
shift /1
goto ploop
:loop
cd /d "%~dp1"
"%~dp0meta2jpeg" --dpi=600 --jpeg=100 --smoothing=2 "%~1" "%CD%"
shift /1
goto ploop
:end
白紙のjpgファイルが出力される時はメモリ足りてないので:ploop
if "%~1"=="" goto end
if /i "%~x1" equ ".emf" goto loop
if /i "%~x1" equ ".wmf" goto loop
shift /1
goto ploop
:loop
cd /d "%~dp1"
"%~dp0meta2jpeg" --dpi=600 --jpeg=100 --smoothing=2 "%~1" "%CD%"
shift /1
goto ploop
:end
smoothingオプションを外せばいけるかも
アンチエイリアスなくてジャギるけどこれだけ解像度高いなら問題なさそう?
メモリ最低1GBあれば、EMFを解像度指定して出力できるmeta2jpgでおkってことで
伝わるデザイン|研究発表のユニバーサルデザイン
http://tsutawarudesign.web.fc2.com/index.html
有名サイトかもだけど知らなかったので、
↓の話とまったく関係ないけどすごくイイ
MS OfficeのグラフとかオートシェイプとかをJPG形式で
600dpiの高解像度で保存できないかちょっと調べてみた
Office以外はフリーソフト使う方向で
方法1 - 仮想プリンタ
この方法が一番環境に左右されないような?
CubePDFで解像度600dpiでjpgなりpngなりで保存
事前にページサイズを画像に合わせるか、
保存後にトリミング出来るソフト使えばおk
以下すべてパワポにEMF(拡張メタファイル)形式で貼り付け、EMF保存で
方法2〜3に関してはEMFが720dpiなので83%に縮小して
解像度変更君かIrfanViewとかで出力後に600dpiにする
もちろんこの方法だと 、ちょっとズレるし、ちょっとぼけます
EMFのdpi値によるのでパワポは720dpiで出力されるけど他で困りそう
方法2 - SusiePlug-in
プラグインとSusie対応の変換ソフト使う方法、AtoB ConverterとかJTrimとか
ifgdip.spiは自分の環境だとうまく動かなかったのでスルー
ラスターデータを参照してたり、背景色指定してないと黒くなったり…
入力解像度指定できるのはよさそうなんだけどな
で、iftgdip.SPIはそのあたり問題なさそう?
方法3 - EMF対応の変換ソフト
IrfanViewも十分使えるんですが、
古いバージョンのOfficeのEMFが表示されなかったので今回はスルー
で、出てきたのがおてがる画像変換というソフト、こっちは問題なし
今回の中で唯一透過pngで保存できます
方法4 - EMF対応の変換ソフトだけどCUI操作
コレが一番綺麗にラクに保存できるけど、要求スペックが…
meta2jpegというコンソールアプリなのでコマンドプロンプトから実行
注意点としてパスに日本語あると動作しないということ
日本語ファイル名も日本語フォルダ名も使えないのでそこだけはマジで気をつけて
送るやショートカット使うわけにもいかないのでデフォのバッチをちょっと改変したのがコレ
↓exeと同じフォルダにemf置いて同じフォルダにjpgで保存するバッチ
@echo off
cd /d "%~dp0"
set SRCDIR=%~dp0
set DSTDIR=%~dp0
set M2JOPT=--dpi=600 --jpeg=100 --smoothing=2
if not exist %DSTDIR% mkdir %DSTDIR%
for %%d in (%SRCDIR%) do for %%f in ("%%d\*.emf" "%%d\*.wmf") do meta2jpeg %M2JOPT% %%f %DSTDIR%
問題点としてメモリ食いまくるのでcd /d "%~dp0"
set SRCDIR=%~dp0
set DSTDIR=%~dp0
set M2JOPT=--dpi=600 --jpeg=100 --smoothing=2
if not exist %DSTDIR% mkdir %DSTDIR%
for %%d in (%SRCDIR%) do for %%f in ("%%d\*.emf" "%%d\*.wmf") do meta2jpeg %M2JOPT% %%f %DSTDIR%
メモリ2GBの環境じゃB5の半分ぐらいのサイズまでしか処理できないです…
今回はメイン環境がXPなので使えなかったけど
EMF to EMF+ Converterというのもありました
EMFをアンチエリアスありのEMF+に変換するソフトで
おまけでpng保存できる機能ついてるけど
EMF形式だけでなくEMF+形式もpng保存出来たらすごく使えそうなんですが…
で、結論としては方法4をメインで3をサブで使うのがいいかなぁと
どうせサイズの多少のズレは標準でサポートされてるし
ちなみに…
2007以降の形式をzipとして解凍するとmediaフォルダの中にあるEMFファイルとか
Enhanced Metafile PickerなどのクリップボードのEMF保存するソフトなんかだと、
解像度がOfficeのバージョンによってまちまちなんで使わない方がよさげかも
2003が720dpiで2007が119dpiで2010が600dpiでした
同様にスプールファイル変換ツールみたいなソフトも
プリンタによってサイズ違うので使えないです
他のソフトからOfficeに貼り付ける時にはわりと便利なんですけどね
どうでもいいけど右クリックで図として保存がパワポのみなのは何故なのか…
まぁ備忘録というか、お金かけない方法だとどうやるのかなと

生存中

これは、どうなんだ…?
右クリの送る or D&Dで特定の拡張子に変更するバッチファイルみたいな
普通にワイルドカード使えばと思ったけど、特定のファイルのみ使いたい時に
↓「.aaa」を「.bbb」にする場合
@echo off
:loop1
if "%~1"=="" exit
if /i "%~x1" equ ".aaa" ren "%~1" "%~n1.bbb"
shift
goto loop1
月イチぐらいの更新は多分したいような…

生きてます?
惰性でも何でももうちょい続かないものか、いろいろ放置しすぎ…
Officeの2007、2010のPDF保存だとアレな場合がけっこうあるみたいで
フリーの仮想プリンタだとCubePDF、doPDF、SoftmioPDFとか
PrimoPDFは4になってからなんか微妙…
他には、Acrobatあるんだったらそのままアドインからでダメな場合
一度XPSで保存して変換してみるとうまくいくかもらしい
PDFファイルだったらコンビニで印刷できるから意外と助かります
PhotoshopだったらPDFで保存できるし、読み込めるし
テキストばっかのエクセルファイルがこんなに読みづらいとは知らなかったというか、
デフォの行の自動調節しても印刷時に文字が詰め詰めで読む気しなかったので
ググってそれっぽいのコピペ改変、今更VBA覚える気無いしなぁ…
Public Sub 行高さを自動調整()
'印刷時のセル高さの余白をなんとかしたかったような何か
'微調整は数字の部分改変とかで
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Range("A1").Select
'↑コメントアウトで選択してるセルから開始
Dim NowRowRange As Range
For Each NowRowRange In ActiveCell.CurrentRegion.Rows
NowRowRange.Select
Selection.Font.Size = Selection.Font.Size + 1
Selection.Rows.AutoFit
If Selection.RowHeight + 13.5 <= 409 Then
Selection.RowHeight = Selection.RowHeight + 13.5
Else
Selection.RowHeight = 409
End If
Selection.Font.Size = Selection.Font.Size - 1
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
フォントサイズ1pt上げて、行の自動調節して、
行の高さ13.5pt上げて、フォントサイズ1pt下げてるハズ
同一行内でフォントサイズが違う場合については考えない

届かなくても、もうちょい響かないかなぁ

年明けてからやっと描き初めるタイプ
朝生が面白くてなかなか寝れない
来年から本気出す