|
分類:[C#]
--------------
int l_Idx = 0;
string l_Msg="";
System.Drawing.Bitmap l_bmp = new System.Drawing.Bitmap(txt_FileName_Begin.Text);
if (l_bmp.PropertyItems == null || l_bmp.PropertyItems.Length == 0)
return;
System.Drawing.Imaging.PropertyItem[] l_pi_All = l_bmp.PropertyItems;
for (l_Idx = 0; l_Idx < l_pi_All.Length; l_Idx++)
{
if (l_pi_All[l_Idx].Type <= 2)
{
l_Msg += l_pi_All[l_Idx].Id.ToString("x4") + " " + l_pi_All[l_Idx].Type.ToString() + " " + System.Text.Encoding.GetEncoding("shift_jis").GetString(l_pi_All[l_Idx].Value,0,l_pi_All[l_Idx].Len-1) + "\r\n";
}
}
MessageBox.Show(l_Msg);
System.Drawing.Imaging.PropertyItem l_pi_Title = l_bmp.PropertyItems[0];
System.Drawing.Imaging.PropertyItem l_pi_Comment = l_bmp.PropertyItems[0];
System.Drawing.Imaging.PropertyItem l_pi_Copyright = l_bmp.PropertyItems[0];
l_pi_Title.Id = 0x010E;
l_pi_Title.Type = 2;
l_pi_Title.Value = System.Text.Encoding.GetEncoding("shift_jis").GetBytes(txt_Title.Text+"\0");
l_pi_Title.Len = l_pi_Title.Value.Length;
l_bmp.SetPropertyItem(l_pi_Title);
l_pi_Comment.Id = 0x9286;
l_pi_Comment.Type = 2;
l_pi_Comment.Value = System.Text.Encoding.GetEncoding("shift_jis").GetBytes(txt_Comment.Text + "\0");
l_pi_Comment.Len = l_pi_Comment.Value.Length;
l_bmp.SetPropertyItem(l_pi_Comment);
l_pi_Copyright.Id = 0x8298;
l_pi_Copyright.Type = 2;
l_pi_Copyright.Value = System.Text.Encoding.GetEncoding("shift_jis").GetBytes(txt_Copyright.Text + "\0");
l_pi_Copyright.Len = l_pi_Copyright.Value.Length;
l_bmp.SetPropertyItem(l_pi_Copyright);
l_bmp.Save(txt_FileName_After.Text,System.Drawing.Imaging.ImageFormat.Jpeg);
l_bmp.Dispose();
MessageBox.Show("変更しました。");
--------------
いつもお世話になっています。vs2010pro+win7proで、jpgのExif情報のタイトル、コメント、著作権を書き換えるサンプルを上のようにコーディングしました。
タイトルと同じ内容が件名に入ったり、すでにタイトルが入力されているjpgの場合は、タイトルは書き換わらず、件名のみが書き換わってしまいます。
常に件名ではなくタイトルを書き換えたいのですが、この辺ご存知の方みえましたらアドバイスしていただけますよう、宜しくお願いいたします。
|