سؤال

أود الحصول على ملء مجموعة سلسلة مع جميع الصور الموجودة داخل الدليل.

حتى الآن يمكنني استخدام ما يلي للحصول على جميع الصور مع شكل جبغ

Dim List() as string = Directory.GetFiles(Path, "*.jpg")

الآن أود تمديده والحصول على جميع تنسيقات الصور.

هل يمكنني استخدام الدليل.جيتفيلز جنبا إلى جنب مع "ImageFormat تعداد"?

هل كانت مفيدة؟

المحلول

مرحبا ، يمكنك استخدام هذا الذي وجدته كمحتوى مجتمعي على http://msdn.microsoft.com/en-us/library/wz42302f.aspx.:

private static string[] GetFiles(string sourceFolder, string filters)
{
   return filters.Split('|').SelectMany(filter => System.IO.Directory.GetFiles(sourceFolder, filter)).ToArray();
}

بديل يستخدم التقييم الكسول (صافي 4.0 فقط):

private static IEnumerable<string> GetFiles(string sourceFolder, string filters)
{
   return filters.Split('|').SelectMany(filter => System.IO.Directory.EnumerateFiles(sourceFolder, filter));
}

يمكنك استخدامه مثل GetFiles("dir", "*.jpg|*.gif|*.jpeg|*.bmp|*.png").هو في الأساس مجرد بحث عن كل مرشح ، لذلك هو لا فعالة بقدر ما يمكن الحصول عليها.

النسخة النهائية هي (هو صافي 4.0 فقط ، ولكن يمكن أن يتم إلى حل 2.0 على الأقل):

private static IEnumerable<string> GetImageFiles(string sourceFolder)
{
   return from file in System.IO.Directory.EnumerateFiles(sourceFolder)
          let extension = Path.GetExtension(file)
          where extension == ".jpg" || extension == ".gif" || extension == ".png"
          select file;
}

وأعتقد أن آخر واحد هو أسرع لأنه حلقات مرة واحدة فقط.لكن هذا يعتمد على كيفية تنفيذ البحث عن النمط في Directory وكيف يبحث نظام التشغيل.هناك حاجة إلى اختبار الأداء الذي لم أقم به.

نصائح أخرى

هذا هو الحل 2.0 .NET.

فعلت شيئا مشابها في C #.استخدم هذا الحل مجلدا كأجهة خارجية للصور المراد معالجتها.تحميل كل نوع من الملفات كصورة غير صحيح الحل في جميع الحالات ولكن أردت التحقق من صحة كل ملف كصورة قابلة للتحمل. giveacodicetagpre.

تبين أنني نسيت قطعة ... قبل أن أتعالج الملفات، استخدمت وظيفة للحد من الملفات التي تتم معالجتها: giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top