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

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

  1. #1

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

    سلام و وقت بخیر دوستان چطوری عکسهایی که داخل یک پوشه در یکی از درایوهای سیستم ذخیره شده را داخل گریدویو نمایش بدهم با تشکر و سپاس

  2. #2
    کاربر دائمی آواتار پرستو پارسایی
    تاریخ عضویت
    آبان 1392
    محل زندگی
    تهران
    پست
    458

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

    نقل قول نوشته شده توسط safari_m4 مشاهده تاپیک
    سلام و وقت بخیر دوستان چطوری عکسهایی که داخل یک پوشه در یکی از درایوهای سیستم ذخیره شده را داخل گریدویو نمایش بدهم با تشکر و سپاس
    // مسیر پوشه حاوی تصاویر
    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 بخوانید و به دیتاتیبل اضافه کنید. در نهایت، دیتاتیبل را به گریدویو ست کرده و سایز ستون تصاویر را به مقدار ثابت تنظیم می‌کنیم.

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

    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 عصر

  4. #4

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

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

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

    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 نباید داشته باشه و در اینجا دیگه ما همه فایل ها رو نمیگیرم کپی کنیم توی لیست و بعد پیمایش کنین ، همون لحظه در حلقه هر کاری داریم انجام میدیم.
    از دات نت فریمورک استفاده می کنم
    تشکر و سپاس از بذل توجه و پاسختان ممنون

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

  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 عصر

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

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