نمایش نتایج 1 تا 4 از 4

نام تاپیک: افزودن تصاویر به گریدویو از داخل پوشه

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #3
    کاربر دائمی آواتار ShayanFiroozi
    تاریخ عضویت
    شهریور 1397
    محل زندگی
    بندرعباس ، خلیج همیشه فارس
    سن
    39
    پست
    226

    Lightbulb نقل قول: افزودن تصاویر به گریدویو از داخل پوشه

    نقل قول نوشته شده توسط پرستو پارسایی مشاهده تاپیک
    // مسیر پوشه حاوی تصاویر
    string folderPath = @"C:\MyImagesFolder";


    // لیستی از فایل‌های موجود در پوشه
    List<string> imageFiles = Directory.GetFiles(folderPath).ToList();


    // ساخت دیتاسورس گریدویو
    DataTable dataTable = new DataTable();
    dataTable.Columns.Add("Image", typeof(Image));


    // برای هر فایل تصویری در لیست، تصویر را بخوانید و به دیتاتیبل اضافه کنید
    foreach (string imagePath in imageFiles)
    {
    Image image = Image.FromFile(imagePath);
    dataTable.Rows.Add(image);
    }


    // ست کردن دیتاتیبل به گریدویو
    dataGridView1.DataSource = dataTable;


    // ست کردن سایز ستون تصاویر به مقدار ثابت
    dataGridView1.Columns[0].Width = 100;


    در این کد، ابتدا مسیر پوشه حاوی تصاویر را تعیین کرده و سپس با استفاده از Directory.GetFiles، همه فایل‌های تصویری موجود در پوشه را برمی‌گردانیم. سپس برای هر فایل تصویری در لیست، تصویر را با استفاده از Image.FromFile بخوانید و به دیتاتیبل اضافه کنید. در نهایت، دیتاتیبل را به گریدویو ست کرده و سایز ستون تصاویر را به مقدار ثابت تنظیم می‌کنیم.

    البته چند نکته در خصوص این پاسخ کامل هست که استفاده کننده باید در نظر بگیره :

    اگر مشخص میشد شما از دات نت کور استفاده میکنین یا دات نت فریمورک خیلی بهتر بود.

    1- Directory.GetFiles اگر به فایل یا پوشه ای بر بخوره که شما بهش دسترسی ندارین فورا خطا میده و چون این خطا داخلی هست شما نمیتونین Ignore کنین ، مگر اینگه یه جورایی تابع GetFiles رو خودتون بنویسین، البته این موضوع مربوط به دات نت فریم ورک هست ، در خصوص دانت نت کور این تابع مدیریت خطاهاش بهبود پیدا کرده.

    2-اگر تعداد پوشه ها و فایل های شما زیاد باشه ، که در یک پروژه پلاکخوانی برای من 1.5 ترابایت بود ! کاربر شما باید دقیقه ها و گاها ساعت ها برای Iterate کردن و پیمایش صبر کنه و در این حالت نرم افزار شما قطعا کرش میکنه ، راه حل اصولیش اینه که شما همین تابع رو به صورت async/await استفاده کنین که به صورت پیشفرض به دلیل نامعلومی در دانت تعبیه نشده ! و باید خودتون بنویسیدش ، زیاد پیچیده نیست ولی با توجه به اینکه شما در ترد UI هم فعالیت دارین حتما خطای Cross-Thread میگیرین که مدیریتش کمی پیچیده میشه.

    یه راه حل جایگزین استفاده از توابعی هست که اصطلاحا yield هستند و همون لحظه که فایل رو پیمایش کردند نتیجه رو بدون از دست دادن context به شما برمیگردونن.



    foreach (string file in Directory.EnumerateFiles(@"D:", "*.cs", SearchOption.AllDirectories))
    {
    Console.WriteLine(file);


    // Or whatever you want to do with damn file !
    }


    توضیحات : توجه کنین به جای GetFiles از EnumerateFiles استفاده شده و در آخر دیگه ()ToList نباید داشته باشه و در اینجا دیگه ما همه فایل ها رو نمیگیرم کپی کنیم توی لیست و بعد پیمایش کنین ، همون لحظه در حلقه هر کاری داریم انجام میدیم.
    آخرین ویرایش به وسیله ShayanFiroozi : یک شنبه 21 خرداد 1402 در 15:29 عصر

تاپیک های مشابه

  1. افزودن تصاویر به برنامه
    نوشته شده توسط ali_72 در بخش برنامه نویسی در محیط QT و هم خانواده هایش
    پاسخ: 1
    آخرین پست: پنج شنبه 03 دی 1394, 14:53 عصر
  2. پاسخ: 8
    آخرین پست: شنبه 11 مرداد 1393, 00:14 صبح
  3. آموزش: افزودن تصاویر به پایگاه داده اوراکل
    نوشته شده توسط رسول_57 در بخش Oracle
    پاسخ: 1
    آخرین پست: دوشنبه 26 خرداد 1393, 11:16 صبح
  4. سوال: نحوه پوشه بندی تصاویر و فایل های ویدیویی در وردپرس؟
    نوشته شده توسط md3848 در بخش طراحی وب (Web Design)
    پاسخ: 0
    آخرین پست: سه شنبه 20 خرداد 1393, 21:23 عصر
  5. آپدیت تصاویر در پوشه و حذف تصاویر قبلی
    نوشته شده توسط fereshte22 در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: سه شنبه 01 خرداد 1386, 15:03 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •