,用Bit地图 更改图片属性,保存乱码
求助,用Bitmap 更改图片属性,保存乱码。
添加属性的方法
保存后的图片属性会再后面多出一些乱码字符

------解决思路----------------------
可能是values的字符编码问题,乱码处应该是什么?
------解决思路----------------------
Refer here:
http://msdn.microsoft.com/en-us/library/System.Drawing.Image_properties(v=vs.110).aspx
------解决思路----------------------
values 应该是 UNICODE 编码外加两个零字节, 00 00, 用这个:
byte[] values = Encoding.Unicode.GetBytes("abcd" + '\0');
/// <summary>
/// 开始处理图片
/// </summary>
/// <param name="dr"></param>
public void Doimg(string path, int ids, Byte[] values)
{
Bitmap bmp = new Bitmap(path); //加载资源
string newpath = path.Replace(".jpg", "Temp.jpg"); //临时保存路径
setTag(bmp, ids, values); //添加属性
delpath(newpath); //保存前先删除旧的
bmp.Save(newpath); //保存新的到临时文件
bmp.Dispose(); //释放资源
delpath(path); //删除源文件
new FileInfo(newpath).MoveTo(path); //临时保存的改成原先的文件名
}
添加属性的方法
private PropertyItem CreatePropertyItem(Bitmap bmp, short type, int tag, byte[] value)
{
PropertyItem item = bmp.PropertyItems[0];
item.Type = type;
item.Len = value.Length;
item.Id = tag;
item.Value = new byte[value.Length];
value.CopyTo(item.Value, 0);
return item;
}
public PropertyItem setTag(Bitmap bmp, int id, byte[] data)
{
PropertyItem p = CreatePropertyItem(bmp, 0x2, id, data);
bmp.SetPropertyItem(p);
return p;
}
保存后的图片属性会再后面多出一些乱码字符
------解决思路----------------------
可能是values的字符编码问题,乱码处应该是什么?
------解决思路----------------------
Refer here:
http://msdn.microsoft.com/en-us/library/System.Drawing.Image_properties(v=vs.110).aspx
------解决思路----------------------
values 应该是 UNICODE 编码外加两个零字节, 00 00, 用这个:
byte[] values = Encoding.Unicode.GetBytes("abcd" + '\0');