بهترین الگوریتم برای ذخیره عکس و فیلم

ms_vb

Member
اساتید محترم سلام
بهترین الگوریتم برای ذخیره عکس و فیلم چیه؟
ممنون می شم اگه جواب بدید
 

the_king

مدیرکل انجمن
اساتید محترم سلام
بهترین الگوریتم برای ذخیره عکس و فیلم چیه؟
ممنون می شم اگه جواب بدید

منظورتون از بهترین الگوریتم چیه؟ می خواهید فرمت تصویری ویدئویی جدید ابداع کنید یا یکسری فایل عکس و فیلم رو در یک فایل واحد ذخیره کنید؟
 

ms_vb

Member
ممنونم از پیگیریهای شما
می خواهم یکسری فایل عکس و فیلم رو در دیتابیس برنامه ذخیره کنم.
برای این کار 2 راه به ذهنم میرسه
اولین راه اینه که فایلهارو در یک مکان خاص کپی کنم و آدرس دستیابی به آن را در دیتابیس ذخیره کنم
که البته به نظرم جالب نمی آید و شاید دیتابیس امنیتش را از دست بدهد...
روش بعدی همانطور که فرمودید این است که همه تصاویر و فیلم ها را در یک فایل واحد ذخیره کنم
که چد سوال پیش می آید
1- سرعت دستیابی به این تصاویر و فیلم ها در مقدار انبوه (مثلا بالای 100 میلیون فیلم و عکس) چگونه خواهد بود
2- آیا حجم بالای این فایل برای برنامه مشکل ساز نمی باشد؟
3- روش ذخیره سازی و بازیابی اطلاعات ذخیره شده در این روش چگونه است؟

شاید راه های بهتری هم باشد که من نمیدانم
و اگر شما سراغ دارید ممنون میشم در میان بگذارید
 

the_king

مدیرکل انجمن
ممنونم از پیگیریهای شما
می خواهم یکسری فایل عکس و فیلم رو در دیتابیس برنامه ذخیره کنم.
برای این کار 2 راه به ذهنم میرسه
اولین راه اینه که فایلهارو در یک مکان خاص کپی کنم و آدرس دستیابی به آن را در دیتابیس ذخیره کنم
که البته به نظرم جالب نمی آید و شاید دیتابیس امنیتش را از دست بدهد...
روش بعدی همانطور که فرمودید این است که همه تصاویر و فیلم ها را در یک فایل واحد ذخیره کنم
که چد سوال پیش می آید
1- سرعت دستیابی به این تصاویر و فیلم ها در مقدار انبوه (مثلا بالای 100 میلیون فیلم و عکس) چگونه خواهد بود
2- آیا حجم بالای این فایل برای برنامه مشکل ساز نمی باشد؟
3- روش ذخیره سازی و بازیابی اطلاعات ذخیره شده در این روش چگونه است؟

شاید راه های بهتری هم باشد که من نمیدانم
و اگر شما سراغ دارید ممنون میشم در میان بگذارید
در یک فایل مثل index.dat مشخصات تمامی فایل ها و موقعیت بایتی شان را مشخص می کنید. مثلا :
نام و پسوند فایل 1 - حجم فایل 1 - موقعیت شروع داده فایل 1
نام و پسوند فایل 2 - حجم فایل 2 - موقعیت شروع داده فایل 2
نام و پسوند فایل 3 - حجم فایل 3 - موقعیت شروع داده فایل 3

در فایل دیگری هم مثلا data.dat محتویات فایل ها را یکجا نگهداری می کنید. تا اینجای کار نه دشوار است و نه مشکل ساز.

اما دسترسی داریم تا دسترسی. اگر بخواهید در حد یک فایل zip یا rar غیر فشرده عمل کند دشوار نیست، اما اگر بخواهید همان لحظه که یکی از محتویاتش را
بخواهید آماده نمایش باشد برای فایل های حجیم و یا فرمت هایی که نمایش اش شان Player خاصی لازم داشته باشد به مشکل بر خواهید خورد.

فرضا شما 1000 تا فایل تصویری 700 کیلوبایتی رو در یک فایل ذخیره کرده اید. وقتی بخواهیم یک تصویر بخصوص را از
داخلش بخوانیم ابتدا جدولی که لیست تصاویر و موقعیت شان در فایل را مشخص کرده می خوانیم که چندان حجیم نیست و با سرعت مناسبی پردازش می شود.
سپس از آن موقعیت بخصوص 700 کیلوبایت می خوانیم که آنهم به سرعت انجام می شود، نمایش این تصویر هم برای فرمت هایی مثل JPEG ساده است.
پس برای تصاویری که خیلی حجیم نیستند به مشکل خاصی بر نمی خورید، حتی اگر تعداد تصاویر خیلی زیاد باشند.

اما این دسترسی به این دلیل ساده بود که هم حجم 700 کیلوبایت قابل توجه نیست و هم نمایش فایل JPEG حتی از داخل RAM دشوار نیست.
اما اگر بخواهید همینکار را با 10 فایل ویدئویی 700 مگابایتی انجام دهید به مشکل بر می خورید. اول اینکه تا زمانی که کل 700 مگابایت را در فایل دیگری
کپی نکنید هیچ Player ای توانایی پخش اش را ندارد. تمامی Player هایی که می توانید در برنامه تان بکار ببرید از شما یک فایل سالم ویدئویی مثل AVI یا WMV می خواهند.
استخراج یک داده حجیم و کپی کردنش در یک فایل دیگر هم زمانبر است و هم احتمالا با تدابیر امنیتی تان جور در نمیاد. برنامه شما نمی تواند به همان
سرعتی که با یک کلیک کردن یک فایل تصویری را از درون بانک اطلاعاتی نمایش می دهد یک فایل ویدئویی حجیم را آماده نمایش کند.

اشکال اصلی این است که اینجور نرم افزار ها نیاز به درایور اختصاصی دارند تا Explorer ویندوز و سایر نرم افزار ها بتوانند مستقیما و بدون نیاز
به کپی کردن در فایل جدید محتویات بانک اطلاعاتی را بخوانند و بکار ببرند. مثلا نرم افزار هایی که از روی Image های CD / DVD درایو مجازی می سازند
از اینگونه درایور ها استفاده می کنند. متاسفانه ساختن درایور کار سخت و دشواری است.
 

ms_vb

Member
خیلی ممنون از جوابتون
آیا این مشکلات برای خواندن فیلمهای حجیم از فایلهای Zip هم به وجود می آید؟
چطور میشود یک پلیر را به فیلمی در یک فایل Zip ربط داد؟
و آیا برای نمایش یک تصویر معمولی Jpeg که با الگوریتمی که فرمودید در یک فایل ذخیره شده باید ابتدا آن را در فایلی جداگانه ذخیره کرد؟ یا میشود آن را به صورت مستقیم به یک PictureBox فرستاده و سپس به نمایش گذاشت؟
 
آخرین ویرایش:

the_king

مدیرکل انجمن
خیلی ممنون از جوابتون
آیا این مشکلات برای خواندن فیلمهای حجیم از فایلهای Zip هم به وجود می آید؟
چطور میشود یک پلیر را به فیلمی در یک فایل Zip ربط داد؟
و آیا برای نمایش یک تصویر معمولی Jpeg که با الگوریتمی که فرمودید در یک فایل ذخیره شده باید ابتدا آن را در فایلی جداگانه ذخیره کرد؟ یا میشود آن را به صورت مستقیم به یک PictureBox فرستاده و سپس به نمایش گذاشت؟

در مورد WinZip و WinRar و اینجور ابزار ها همیشه این مساله هست، اونها باید اول فایل فشرده رو در یک فایل جدید دیگری از حالت فشرده خارج کنند و تازه بعد از اون قابل دسترسی است،
دلیلش هم اینه که به سیستم عامل درایوری اضافه نمی کنند که بتونه مستقیما با فایل فشرده به عنوان یک درایو تعامل داشته باشه.
اما چند نرم افزار هستند که بر اساس فایل های zip و rar یک درایو مجازی می سازند، اونها این مشکل رو ندارند به این جهت که یک درایور مخصوص برایشان نوشته شده.
با کمک درایور این مشکلات حل میشه، چون سیستم عامل به کمک اون درایور فایل فشرده رو مثل یک درایو می بینه.

به عنوان مثال :
Rar Mount

WinArchiver Virtual Drive
 

ms_vb

Member
خیلی خیلی ممنون از جوابتون استاد محترم
نمایش تصویر (jpeg) هم این شرایط رو داره؟
یا میشه به صورت مستقیم اونو از فایل خوانده و رسم کرد؟
 

the_king

مدیرکل انجمن
خیلی خیلی ممنون از جوابتون استاد محترم
نمایش تصویر (jpeg) هم این شرایط رو داره؟
یا میشه به صورت مستقیم اونو از فایل خوانده و رسم کرد؟

بله. البته فقط JPEG نه، کلا همه فرمت های تصویری ای که Net. بصورت استاندارد نشون میده مثل JPEG و PNG و GIF و BMP می توانند بدون نیاز به یک فایل مجزا
و از داخل حافظه RAM نمایش داده شوند. Image.FromStream با یک Stream تصویر رو ایجاد می کنه که این Stream می تونه یک MemoryStream
باشه که در حافظه RAM ایجاد میشه.
 

جدیدترین ارسال ها

بالا