PDA

View Full Version : خواندن و نوشتن مشخصات و تگ های فایل صوتی و تصویری



Hossis
یک شنبه 12 مرداد 1399, 18:07 عصر
تصاویر و فایل های صوتی، مشخصاتی علاوه بر مشخصات عمومی فایل ها دارند
مثلا : تگ ها (برچسب ها)، موضوع، پدید آور و ...
چطور میشه به این خصوصیات دسترسی داشت و آنها را تغییر داد؟؟
تصویر زیر، یک نمونه از ویژگی های یک عکس است:
151995

daniyaltjm
یک شنبه 12 مرداد 1399, 19:37 عصر
https://github.com/mono/taglib-sharp

https://stackoverflow.com/questions/68283/view-edit-id3-data-for-mp3-files

Hossis
دوشنبه 20 مرداد 1399, 00:11 صبح
شما با این کامپوننت کار کردید؟؟
من تونستم با این کامپوننت، مشخصات فایل تصویری روبخونم ، ولی هنگام ذخیره، خطا می ده
خطا این هست که فایل توسط برنامه دیگری باز است
ظاهرا فایل قبلی رو نبسته یا این که چون تصویر رو توسط پیکچر باکس نمایش می دم، این خطا رو می ده

daniyaltjm
دوشنبه 20 مرداد 1399, 16:48 عصر
شما با این کامپوننت کار کردید؟؟
من تونستم با این کامپوننت، مشخصات فایل تصویری روبخونم ، ولی هنگام ذخیره، خطا می ده
خطا این هست که فایل توسط برنامه دیگری باز است
ظاهرا فایل قبلی رو نبسته یا این که چون تصویر رو توسط پیکچر باکس نمایش می دم، این خطا رو می ده

نه کار نکردم!..

بله باید پیکچرباکستونو نابود کنید:
pictureBox1.Image.Dispose();



ولی جهت اطلاع بگم که این کتابخونه فقط برای فایل های صوتی تصویری استفاده میشه من فکر نکنم برای عکس نتیجه خوبی بگیری ازش

ولی خب این رو امتحان کن خوبه فکرکنم!!




var jpeg = new JpegMetadataAdapter(@"C:\Users\Daniyal\Desktop\test.jpg");
jpeg.Metadata.Comment = "نمونه برای تست";
jpeg.Metadata.Title = "نمونه برای تست";
jpeg.Metadata.Subject = "نمونه برای تست";
jpeg.Save(); // Saves the jpeg in-place
jpeg.SaveAs(@"C:\test"); // Saves with a new path



public class JpegMetadataAdapter {
private readonly string path;
private BitmapFrame frame;
public readonly BitmapMetadata Metadata;


public JpegMetadataAdapter(string path)
{
this.path = path;
frame = getBitmapFrame(path);
Metadata = (BitmapMetadata)frame.Metadata.Clone();
}


public void Save()
{
SaveAs(path);
}


public void SaveAs(string path)
{
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(frame, frame.Thumbnail, Metadata, frame.ColorContexts));
using (Stream stream = File.Open(path, FileMode.Create, FileAccess.ReadWrite))
{
encoder.Save(stream);
}
}


private BitmapFrame getBitmapFrame(string path)
{
BitmapDecoder decoder = null;
using (Stream stream = File.Open(path, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
decoder = new JpegBitmapDecoder(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
}
return decoder.Frames[0];

}
}


منبع: https://stackoverflow.com/questions/1755185/how-to-add-comments-to-a-jpeg-file-using-c-sharp