رفتن به مطلب
  • 0

لود تعدادی عکس و کم کیفیت شدن و هنگ کردن برنامه


پژمان نیکروان

سوال

سلام :-d

جالب اینجاست این مشکل هنگ در تصاویر و کم شدن کیفیت روی منم اثر گذاشته و واقعا موندم چیکار کنم.

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

در مورد عکس های کم به تعداد 16 تا مشکلی پیش نمیاد.

اما تعداد مثلا اگه 25تا باشه موقع لیست کردن عکسا کم کم عکس های دیگه کیفیتشون کم میشه و برنامه هم اصلا انگاه داره میترکه *r24*

error.gif

ما اینجا گرد هم اومدیم تا ببینیم مشکل واقعا چیه؟؟ :-d

آیا بیسیک4اندروید باگ داره که اینجوری میشه؟

آیا راه حلی در سایت اصلی هم وجود نداره؟؟

و در کل دلیل این هنگ و کم شدن کیفیت برای چیه؟

حتی من با تایمر عکسارو 5تا 5تا هم لود کردم اینبار اررور نداد ولی عکسا کم کیفیت شد و اررور هایی همچنان تو لاگ مثل عکس بالا میومد. *fekr*

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • پاسخ ها 68
  • ایجاد شده
  • آخرین پاسخ

ارسال‌های توصیه شده

اقای محمدی بخدا من سورسم زیاده یک قسمت بدم باز بدتر گیج میشید .. شما اون قسمتی که عکس هارو لود میکنید بدید من تغییرات رو بگم بهتون مخلصتم هستم

pic1 =  LoadBitmapSample (File.DirAssets ,"menublack.png" , 300,100)
Btnansar.SetBackgroundImage(pic1)
    Btnbayan.SetBackgroundImage(pic1) 
    Btnbooks.SetBackgroundImage(pic1) 
    Btnbookss.SetBackgroundImage(pic1) 
    Btnclip.SetBackgroundImage(pic1) 

این هم وقتی میخوام از اکتیویتی خارج بشم میزنم

Btnansar.SetBackgroundImage(Null)
    Btnbayan.SetBackgroundImage(Null) 
    Btnbooks.SetBackgroundImage(Null) 
    Btnbookss.SetBackgroundImage(Null) 
    Btnclip.SetBackgroundImage(Null) 
    Btnday.SetBackgroundImage(Null) 

البته این باتوم ها چون منو هستند از یک تصویر پر میشن شما میتونید هر کدوم رو مثلا یک ادرس تصویر خودشو بدید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خیلی ممنون مهندس علیرضا

من تو یه لایوتم حدود 40 ایمیج ویو دارم درست؟

خب غیر از ایمیج ویو هم یه باتون هست برای استارت اکتیویتی بعدی خب حالا تو لایوت بعدیمونم 10 تا ایمیج ویو داریم و لایوت سوم هم 15 تا این تا اینجا

خب من دیگه نیومدم عکس هامو لود کنم بعد تو کدنویسی سِت بک گراند کنم

اومدم توی خود دیزاینر روی ایمیج ویو هام تک تک کلیک کردم و از طریق Bitmap عکسمو فراخوانی کردم یعنی تو قسمت کد نویسی کاری نکردم

حالا موقع ران گرفتن برنامه انقدر سنگین میشه که ارور توقف اجباری میده

خب حالا من میخوام اینجوری نشه از صحبتاتون چیزی متوجه نشدم

میشه مثلا شما برای 3 تا دونه ایمیج ویو مثال بزنید ببینم چجوری باید انجام بدم؟

قسمت sub global باید چی بنویسم؟

Activity Create چی باید بنویسم؟

موقع خروج باید Null کنم؟ این یعنی چی من برای برگشت از اکتیویتی مثلا دوم به اکتیویتی اول اصلا باتونی در نظر نگرفتم ممنون میشم مختصر توضیح بدید

خیلی ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

من ی پروژه دارم که حافظه رمو شدید بالا می بره

هرکار میکنم باز این مشکلو دارم

برنامه کاملا آنلاینه، عکسارو از دیتابیس میگیره

تا ی خورده باهاش ور میرم برنامه متوقف میشه

الان ی ماهه درگیرشم

ینی یکی نیس بم کمک کنه لطفا

خواهشا یکی دست یاری بده تا پروژمو بفرسم ببینه مشکل از چیه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

مرسی از همتون با loadbitmapsample درست شد

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوست عزیز توی یه ساعت 2 بار پست گذاشتید و این خلاف قوانینه 

دقیقا بگو هدفت چیه (عکس هات تو  مولتی پنله؟ )تا هم من و دوستان بهتر بتونن کمکت کنن 

بابت پست معذرت........................ 200 تا عکس رو واسه یه برنامه تو مولتی پنل میخام استفاده کنم( حجم کل عکسا 2 مگه) البته کیفیت پایین نیستن..... حالا میخام ببینم چی کنم که کیفیت نیاد پایین ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

علیرضا تو از loadbitmapsample استفاده کردی مشکلت حل شد؟؟

من الان همینکارو کردم دیگه عکسا کم کیفیت نمیشه کرش هم نمیکنه.

و مقدار رم هم بعد از هر بار هی زیاد تر نمیشه.

الان حله ؟ این روش خوبه بنظرت؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خداروشکر.

راستی راستی جواب داد و حتی خطای اون رم رو هم تو لاگ نمیده :-d

و موقع ای که دارم تصاویر رو ورق میزنم کد backGround=null رو قرار دادم و موقع خارج شدن هم همینطور.

پس یعنی دیگه عکسارو صفحه بندی نکنم بنظرت؟ و هرچقد که هست تو یه اسکرول لودش کنه؟؟

الان نزدیک 50تا دارم که لودش کرد بدون مشکل.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آقا پژمان لطفا اگه نتیجه ای گرفتید سورس رو هم قرار میدید؟ منم مشکلم کاملا شبیه شما هست ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آره این یه مشکل اساسی تو B4A هست که خداروشکر حل شد.


بااجازه موضوع مهم شد. :tashvigh:


لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام به همه دوستان عزیز


اگه از کد زیر



SetApplicationAttribute(android:largeHeap,"true")

توی مانیفست استفاده کنیم برنامه روی گوشی های اندروید پایین هم کار میکنه یا فقط اندروید 4؟


و یه سوال دیگه.این کد مانع هنگ برنامه و افت کیفیت عکسا میشه؟؟


لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

به صورت کامل و واضح به من بگید که چه کدی رو با ید تو چه مسیری قرار بدم. با تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

درود،

روی اندروید 3 و 3 به بالا کار میکنه. (اصلا اندروید 3 داریم؟! :crazy: )

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

در ضمن حداقل api 11 رو باید داشته باشید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوستان من هم همین مشکل رو داشتم و برای لودکردن عکس هام به جای استفاده از load bitmap از load bitmap sample استفاده کردم و مشکلم حل شد

در ضمن استفاده از این کد در منیفست هم میتونه مفید باشه

SetApplicationAttribute(android:largeHeap,"true")
لینک ارسال
به اشتراک گذاری در سایت های دیگر

شما اول این کد رو کپی کن در مانیفست سخت که نیست

SetApplicationAttribute(android:largeHeap,"true")

دوم

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

همه ابجکتها رو بدون تصویر کن و مطمئن شو

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

Imageview1.SetBackgroundImage( LoadBitmapSample  (File.DirAssets ,"wall.jpg",300,300))

حالا تمام شد الان ابجکتها با تصاویر پر شدن خوب میری یک اکتیویتی دیگه خوب قبلش باید این اکتیویتی رو Activity.finish کنی دقیقا قبل این کار باید همه ابجکتهای اون 40 خط رو دوباره خالی کنی بااین کد

Imageview1.SetBackgroundImage(Null) 

خوب این بلا رو باید سر هر اکتیویتی که لود میکنی باید بیاری یعنی ابجکتهای تصویر دار رو به این روش تصویر بدی ودر نهایت خروج از اکتیویتی Null کنی

نمیتونی بگی من با چیزی نمیرم به اکتیویتی بعدی بالاخره هر زمان با یک اکتیویتی کار میکنی یعنی قبلی رو نیاز نداری پس باید Finish کنی تا همه کدهای null اجرا بشن و حافظه خالی بشه و نترکه *r24*

سوالی بود در خدمتم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بله من این رو از خود سایت منبع پیدا کردم و در چند جا تاکید شده بود از loadbitmapsample استفاده بشه و در نهایت Null بشه که ظاهرا خود اندروید وقتی تصویر به منبع خودش وصل نباشه از حافظه پاک شده فرض میکنه و رونویسی میشه ..

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

Pnlscr.SetBackgroundImage(LoadBitmapSample(File.DirAssets ,"wall.jpg",300,500))

وقتی کار با هر ابجکت تموم میشه قبل از رموو کردن باید تصویر رو ازش بگیری

Pnlscr.SetBackgroundImage(Null)

به همین سادگی و البته اگر ابجکتهای زیادی داری بهتره یک sub براش درست کنی و اونها رو اونجا پر و خالی کنی

اقای محمدی نمونه همینه اینجا من پنل رو تصویر دادم بجاش هر چی باشه فرقی نداره .

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اگه سورس کد پیوست کنید عالی میشه من الآن نیم ساعته پشت کامپیوترم و نمیدونم چکار کنم :(

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من اجرا کردم این دو خط رو

ولی هنوز به جواب نرسیدم

هنوز تصاویرم تار میشه و صفحه هنگ میکنه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • اضافه کردن...