Windows VScode MinGW C言語 エンコード:ShiftJIS
前提・実現したいこと
例えば、画像1:1200x900,画像2:2400x1800があるとして、これをd&dすると、
縦:x2 x0.5
横:x2 x0.5
という風に表示するプログラムを作りたいです。
現在、以下の流れで実行する様にしようと思っております。
プログラムに画像2つをd&d ↓ 画像のパスをMediainfoに送り、縦横のピクセル数を求めさせ、結果を何らかの方法でプログラムに返す。(いろんな形式の画像に対応するにはライブラリを色々積まねばならないようなので、既存品を流用とした。) ↓ 結果をもとに計算する ↓ 表示
そして、現在このように実装しようとしています。
C
1#include <stdio.h> 2#include <windows.h> 3int main(int argc,char *argv[]){ 4 char all-pass[8192]={};//送るコマンドの格納配列。 5 char image-pass[]={};//画像のパスの仮置き配列。テスト後はargvが担う予定…? 6 int i;//カウンタ 7 char app-pass[]={};//ここにmediainfoのパス 8 9 for(i=1;i<3;i++){//将来用のforループ。今は意味がない。 10 sprintf(all-pass,"%s %s>test%d.txt",app-pass,image-pass,i);//コマンド生成。txtに実行結果を出す。後でtxtからデータを抽出予定。 11 if ( system(all-pass) != EXIT_SUCCESS ) {//コマンド送る 12 puts("file read error"); 13 exit(EXIT_FAILURE); 14 } 15 } 16 system("pause");//d&dでやるとき、画面がすぐ消えられると困るので。 17 return 0; 18}
発生している問題・エラーメッセージ
しかし、ファイルパスに日本語が混じると、ダメ文字と俗に言われているらしいエスケープシーケンスのあれこれでバグります。
UTF8BOMでやれば、ダメ文字問題解決と、PowerShellの文字化け回避を両立できると思いましたが、今度はShiftJIS時点で普通に動いた奴でもダメになりました。
如何様にすればよいでしょうかね?
もっと良い方法や、既存でそういうのがあればそれらを教えてもらえるととてもうれしいです。
他には、アプリ起動後にd&dできるようにする方法が知りたいです。
現在はアイコンにd&dするほかない状態ですので。
WinAPIはさっぱりですわい。
細かい経緯
ネットで拾った解像度が悪いコラ画像を画質のいい元画像とあわせて高画質化するためにこのプログラムの原型ができました。
手作業でMediainfoにまず画像をぶち込み、そこで表示された2枚の画像の解像度をお手製プログラムに打ち込むと、縦横の拡大倍率が表示される。
縦横わざわざ両方だしてる理由は、コラ画像が、元画像のどちらか一方の辺をトリミングしていても、対応できるようにですね。
あと、どちらの画像の大きさに合わせてもいいように、倍率は逆数も出しています。
その、手作業部分が面倒に感じたので組み込んでしまおうと思いました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/17 11:16
2019/02/17 11:20
2019/02/17 11:30
2019/02/17 11:34
2019/02/17 11:52
2019/02/17 11:54
2019/02/17 12:08