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

نام تاپیک: عدم نمایش عکس ها

  1. #1

    Arrow عدم نمایش عکس ها

    سلام من یه برنامه شبیه گالری عکس درست کردم که بعد از مشخص کردن پوشه موردنظر ، برنامه عکس های درون آنرا بصورت گالری در پنجره ای پشت هم باز میکند که میتوان بعد از کلیلک روی هر عکس ، بزرگ شده عکس را در پنجره ای داخل برنامه مشاهده کرد ولی زمانیکه 50 یا بیشتر عکس که داخل برنامه بارگزاری میشه دیگه بعد از آن هیچ عکسی داخل picturebox های برنامه نمایش داده نمیشه تا اینکه برنامه را کلا ببندم و دوباره باز کنم که دوباره تا تعدادی عکس نمایش بده .هیچ اروری هم نمیده فقط دیگه نمایش نمیده.

    باید چه کنم؟

  2. #2
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: عدم نمایش عکس ها

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

  3. #3

    نقل قول: عدم نمایش عکس ها

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

    چطور میشه بعد از لود یه تعداد عکس در برنامه با بستن پنجره نمایش ، حافظه رم اختصاص یافته را آزاد کرد.فکر کنم اینطوری مشکل حل بشه .راهش بلد نیستم

  4. #4

    نقل قول: عدم نمایش عکس ها

    مهندسین محترم کمک کنند نیاز شدید دارم

  5. #5

    نقل قول: عدم نمایش عکس ها

    شما لطفا کدهاتون رو بذارید اینجوری که نمیشه کمکی کرد

  6. #6
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: عدم نمایش عکس ها

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


    GC.Collect();
    GC.WaitForPendingFinalizers();

  7. #7

    نقل قول: عدم نمایش عکس ها

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    شما لطفا کدهاتون رو بذارید اینجوری که نمیشه کمکی کرد

    try
    {
    if (!string.IsNullOrWhiteSpace(_path))
    {
    Image im = Image.FromFile(_path);

    if (im.Width > im.Height)
    {
    this.Width = 710;
    this.Height = 560;
    }
    else
    {
    this.Width = 510;
    this.Height = 630;
    }
    im.Dispose();
    pbox.Load(_path);
    }
    }
    catch (Exception)
    {
    }


  8. #8

    نقل قول: عدم نمایش عکس ها

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


    GC.Collect();
    GC.WaitForPendingFinalizers();
    یک مقدار درباره کدها توضیح میدید لطفا

    GC چی هست؟

  9. #9
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: عدم نمایش عکس ها

    نقل قول نوشته شده توسط glyas47 مشاهده تاپیک
    یک مقدار درباره کدها توضیح میدید لطفا

    GC چی هست؟
    بهتره یه بار این مقاله رو مطالعه کنید
    https://programming.tosinso.com/fa/t...a-%d9%86%d8%aa

    GC برای مدیریت حافظه هستش.مقاله رو بخونید کامل درک میکنید.
    آخرین ویرایش به وسیله رامین مرادی : دوشنبه 13 آبان 1398 در 13:32 عصر

  10. #10

    نقل قول: عدم نمایش عکس ها

    نقل قول نوشته شده توسط رامین مرادی مشاهده تاپیک
    بهتره یه بار این مقاله رو مطالعه کنید
    https://programming.tosinso.com/fa/t...a-%d9%86%d8%aa

    GC برای مدیریت حافظه هستش.مقاله رو بخونید کامل درک میکنید.
    بسیار متشکرم

  11. #11
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,147

    نقل قول: عدم نمایش عکس ها

    پیشنهاد میکنم در زمان دخیره کردن تصاویر حتما یک Thumbnail بسازید و تا زمانی که به خود عکس اصلی کاری ندارید، برای مرور و کارهای متفرقه از Tumbnail های کم حجم استفاده کنید. همچنین در بکارگیری متغیرها اگر امکان داشت حتما متغیر رو Dispose کنید. میتونید از Using هم استفاده کنید(اگر امکان داشت).

  12. #12

    نقل قول: عدم نمایش عکس ها

    نقل قول نوشته شده توسط glyas47 مشاهده تاپیک
    سلام من یه برنامه شبیه گالری عکس درست کردم که بعد از مشخص کردن پوشه موردنظر ، برنامه عکس های درون آنرا بصورت گالری در پنجره ای پشت هم باز میکند که میتوان بعد از کلیلک روی هر عکس ، بزرگ شده عکس را در پنجره ای داخل برنامه مشاهده کرد ولی زمانیکه 50 یا بیشتر عکس که داخل برنامه بارگزاری میشه دیگه بعد از آن هیچ عکسی داخل picturebox های برنامه نمایش داده نمیشه تا اینکه برنامه را کلا ببندم و دوباره باز کنم که دوباره تا تعدادی عکس نمایش بده .هیچ اروری هم نمیده فقط دیگه نمایش نمیده.

    باید چه کنم؟
    مثال پیوستی رو ببینید :

    PhotoBrowserSample.zip

    اصولی که من در اینجور موارد رعایت می کنم اینهاست :

    • اگر کاربر در این لحظه باید تصویر شماره 4 رو ببینه، اولویت اینه که با حداکثر سرعت تصویر شماره 4 فراخوانی و نمایش داده بشه. سایر عملیاتی که میخواهیم انجام بدیم باید در اولویت های بعدی قرار بگیرند.
    • خوبه که چندین عکس رو فراخوانی کنم و در cache نگهدارم ولی هرگز کاربر رو برای فراخوانی تصاویری که الان نمیخواد ببینه معطل نخواهم کرد.
    • چون معمولا مرور تصاویر به سمت بالا و پایین لیست فایل ها است و پیمایش متوالی است، چند تصویر قبلی و چند تصویر بعدی رو در حافظه cache فراخوانی می کنم تا سرعت نمایش اونها افزایش پیدا کنه.
    • فراخوانی باید در نخ مجزایی باشه، نه در نخ اصلی برنامه تا برنامه موقع فراخوانی سکته نکنه.
    • در کار GC دخالت نخواهم کرد، وظیفه من به عنوان برنامه نویس یک زبان سطح بالا مثل #C که مدیریت حافظه خودکار داره اینه که هر زمان که دیدم دیگر نیازی به یک شی Disposable شدنی ندارم، به سادگی Dispose اش کنم، فقط همین.

    اینکه حافظه های بلااستفاده مدیریت شده (Managed) در همون لحظه آزاد نمیشه دلایل منطقی داره، بیخودی نیست که GC در آزاد کردنشون عجله نمیکنه.
    من به GC درخواست نمیدم که یالا آزادشون کن، دخالت نمی کنم. GC خودش هر زمانی که مفید بدونه حافظه بلااستفاده رو آزاد میکنه تا به سیستم عامل برگردونه.
    GC عملکرد بی نقص و فوق العاده ای نداره اما دخالت من هم اونقدر ها که بنظر خودم میاد مفید نیست.

    • از Image.FromFile استفاده نخواهم کرد، چون روتینش طوریه که فایل رو بعد باز کردن گرو نگه میداره و Lock میشه و کاربر نمیتونه فایلش رو Rename یا Delete یا ... بکنه، حتی وقتی دیگه تصویر رو نمیبینه.

    وقتی کاربر تصویری رو روی فرم نمیبینه از دید اون نباید فایلش مشغول باشه. وقتی اطلاعات تصویر رو در حافظه RAM خوندیم اساسا دیگه احتیاجی به فایلش نداریم.
    بجای Image.FromFile خودم فایل رو میخونم و Image.FromStream رو بکار می برم تا بعدش فایل رو ببندم.

  13. #13
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: عدم نمایش عکس ها

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    مثال پیوستی رو ببینید :

    PhotoBrowserSample.zip

    اصولی که من در اینجور موارد رعایت می کنم اینهاست :

    • اگر کاربر در این لحظه باید تصویر شماره 4 رو ببینه، اولویت اینه که با حداکثر سرعت تصویر شماره 4 فراخوانی و نمایش داده بشه. سایر عملیاتی که میخواهیم انجام بدیم باید در اولویت های بعدی قرار بگیرند.
    • خوبه که چندین عکس رو فراخوانی کنم و در cache نگهدارم ولی هرگز کاربر رو برای فراخوانی تصاویری که الان نمیخواد ببینه معطل نخواهم کرد.
    • چون معمولا مرور تصاویر به سمت بالا و پایین لیست فایل ها است و پیمایش متوالی است، چند تصویر قبلی و چند تصویر بعدی رو در حافظه cache فراخوانی می کنم تا سرعت نمایش اونها افزایش پیدا کنه.
    • فراخوانی باید در نخ مجزایی باشه، نه در نخ اصلی برنامه تا برنامه موقع فراخوانی سکته نکنه.
    • در کار GC دخالت نخواهم کرد، وظیفه من به عنوان برنامه نویس یک زبان سطح بالا مثل #C که مدیریت حافظه خودکار داره اینه که هر زمان که دیدم دیگر نیازی به یک شی Disposable شدنی ندارم، به سادگی Dispose اش کنم، فقط همین.

    اینکه حافظه های بلااستفاده مدیریت شده (Managed) در همون لحظه آزاد نمیشه دلایل منطقی داره، بیخودی نیست که GC در آزاد کردنشون عجله نمیکنه.
    من به GC درخواست نمیدم که یالا آزادشون کن، دخالت نمی کنم. GC خودش هر زمانی که مفید بدونه حافظه بلااستفاده رو آزاد میکنه تا به سیستم عامل برگردونه.
    GC عملکرد بی نقص و فوق العاده ای نداره اما دخالت من هم اونقدر ها که بنظر خودم میاد مفید نیست.

    • از Image.FromFile استفاده نخواهم کرد، چون روتینش طوریه که فایل رو بعد باز کردن گرو نگه میداره و Lock میشه و کاربر نمیتونه فایلش رو Rename یا Delete یا ... بکنه، حتی وقتی دیگه تصویر رو نمیبینه.

    وقتی کاربر تصویری رو روی فرم نمیبینه از دید اون نباید فایلش مشغول باشه. وقتی اطلاعات تصویر رو در حافظه RAM خوندیم اساسا دیگه احتیاجی به فایلش نداریم.
    بجای Image.FromFile خودم فایل رو میخونم و Image.FromStream رو بکار می برم تا بعدش فایل رو ببندم.
    متاسفانه فایلتون رو ویروس میشناسه امکانش هست کد هارو بزارید؟ یا فایل اجراییش رو پاک کنید بعد همینجا اپلود کنید؟ممنون

  14. #14

    نقل قول: عدم نمایش عکس ها

    نقل قول نوشته شده توسط رامین مرادی مشاهده تاپیک
    متاسفانه فایلتون رو ویروس میشناسه امکانش هست کد هارو بزارید؟ یا فایل اجراییش رو پاک کنید بعد همینجا اپلود کنید؟ممنون
    اینم نتیجه بررسی همون فایل با 59 ویروس کش :

    No engines detected this file

    PhotoBrowserSample2.zip

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

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