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

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


DexterFstone

سوال

سلام من قطعه کد زیر توی ی ساب دارم

	Private j As HttpJob
	j.Initialize("j",Me)
	j.Download(s)
	Wait For (j) JobDone(j As HttpJob)
	If j.Success Then
		Dim b As Bitmap = j.GetBitmap
		CallSub2(Me,"IconDone",B)
	End If
	j.Release

ولی خب وقتی بخوام مقدار بیتمپ return کنم ساب دچار مشکل میشه

ئر واقع 2 تا ساب مجزا دارم یکی میخوام برام لیست ایجاد کنه از طرفی باید منتظر ساب دوم باشه که عکس براش دانلود کنه خب مشکل من اینجاس توی ساب دوم که Wait for صدا زده شده بعد از اجرای بخش دانلود توی ساب منتظر نمیمونه و شروع به پیمایش ساب میکنه و خب من دچار ارور میشم

میدونم درست منظورما بیان نکردم ولی شما راه حلی دارین وقتی که منتظر یک عکسین در عین حال ساب بعدی قرار اون عکسا قرار بده توی لیست ویو؟ حتی ساب بعدی که قرار عکس توی لیست قرار بده را توی  If j.Success Then قرار دادن و فقط ارور گرفتم😀

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

8 پاسخ به این سوال تاکنون داده شده است

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

ی سوال دیگه من وقتی دارم عکس و صفحه وب دانلود میکنم (نزدیک به 100 تا) ی ارور میگیرم

java.lang.OutOfMemoryError: Failed to allocate a 27318432 byte allocation with 16777216 free bytes and 25MB until OOM
	at java.lang.StringBuilder.toString(StringBuilder.java:408)
	at java.util.Formatter.toString(Formatter.java:2326)
	at java.lang.String.format(String.java:2626)
	at com.securepreferences.AesCbcWithIntegrity$CipherTextIvMac.toString(AesCbcWithIntegrity.java:603)
	at com.securepreferences.SecurePreferences.encrypt(SecurePreferences.java:270)
	at com.securepreferences.SecurePreferences.access$200(SecurePreferences.java:53)
	at com.securepreferences.SecurePreferences$Editor.putString(SecurePreferences.java:522)
	at sharedpref.Prefclass.savesecurString(Prefclass.java:28)
	at ir.DGMemory.save._lists(save.java:128)
	at b4a.example.load$ResumableSub_Activity_Create.resume(load.java:745)
	at anywheresoftware.b4a.shell.DebugResumableSub$DelegatableResumableSub.resumeAsUserSub(DebugResumableSub.java:48)
	at java.lang.reflect.Method.invoke(Native Method)
	at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
	at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:351)
	at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
	at java.lang.reflect.Method.invoke(Native Method)
	at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
	at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
	at anywheresoftware.b4a.shell.DebugResumableSub$DelegatableResumableSub.resume(DebugResumableSub.java:43)
	at anywheresoftware.b4a.BA.checkAndRunWaitForEvent(BA.java:267)
	at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:137)
	at anywheresoftware.b4a.BA$2.run(BA.java:387)
	at android.os.Handler.handleCallback(Handler.java:751)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:154)
	at android.app.ActivityThread.main(ActivityThread.java:6138)
	at java.lang.reflect.Method.invoke(Native Method)

مشکل از چیه و چطوری رفعش کنم؟

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

در ۱۴۰۰/۱۰/۹ در ۱۱:۵۷، DexterFstone گفته است:

ی سوال دیگه من وقتی دارم عکس و صفحه وب دانلود میکنم (نزدیک به 100 تا) ی ارور میگیرم

java.lang.OutOfMemoryError: Failed to allocate a 27318432 byte allocation with 16777216 free bytes and 25MB until OOM
	at java.lang.StringBuilder.toString(StringBuilder.java:408)
	at java.util.Formatter.toString(Formatter.java:2326)
	at java.lang.String.format(String.java:2626)
	at com.securepreferences.AesCbcWithIntegrity$CipherTextIvMac.toString(AesCbcWithIntegrity.java:603)
	at com.securepreferences.SecurePreferences.encrypt(SecurePreferences.java:270)
	at com.securepreferences.SecurePreferences.access$200(SecurePreferences.java:53)
	at com.securepreferences.SecurePreferences$Editor.putString(SecurePreferences.java:522)
	at sharedpref.Prefclass.savesecurString(Prefclass.java:28)
	at ir.DGMemory.save._lists(save.java:128)
	at b4a.example.load$ResumableSub_Activity_Create.resume(load.java:745)
	at anywheresoftware.b4a.shell.DebugResumableSub$DelegatableResumableSub.resumeAsUserSub(DebugResumableSub.java:48)
	at java.lang.reflect.Method.invoke(Native Method)
	at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
	at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:351)
	at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
	at java.lang.reflect.Method.invoke(Native Method)
	at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
	at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
	at anywheresoftware.b4a.shell.DebugResumableSub$DelegatableResumableSub.resume(DebugResumableSub.java:43)
	at anywheresoftware.b4a.BA.checkAndRunWaitForEvent(BA.java:267)
	at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:137)
	at anywheresoftware.b4a.BA$2.run(BA.java:387)
	at android.os.Handler.handleCallback(Handler.java:751)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:154)
	at android.app.ActivityThread.main(ActivityThread.java:6138)
	at java.lang.reflect.Method.invoke(Native Method)

مشکل از چیه و چطوری رفعش کنم؟

حجم احتمالا عکس زیاده. باید لوگ بگیرید ببینید کدوم خط و کد ارور میده (کجای کد همچین اروری میده؟)

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

در ۱۴۰۰/۱۰/۸ در ۱۳:۳۶، DexterFstone گفته است:

سلام من قطعه کد زیر توی ی ساب دارم

	Private j As HttpJob
	j.Initialize("j",Me)
	j.Download(s)
	Wait For (j) JobDone(j As HttpJob)
	If j.Success Then
		Dim b As Bitmap = j.GetBitmap
		CallSub2(Me,"IconDone",B)
	End If
	j.Release

ولی خب وقتی بخوام مقدار بیتمپ return کنم ساب دچار مشکل میشه

ئر واقع 2 تا ساب مجزا دارم یکی میخوام برام لیست ایجاد کنه از طرفی باید منتظر ساب دوم باشه که عکس براش دانلود کنه خب مشکل من اینجاس توی ساب دوم که Wait for صدا زده شده بعد از اجرای بخش دانلود توی ساب منتظر نمیمونه و شروع به پیمایش ساب میکنه و خب من دچار ارور میشم

میدونم درست منظورما بیان نکردم ولی شما راه حلی دارین وقتی که منتظر یک عکسین در عین حال ساب بعدی قرار اون عکسا قرار بده توی لیست ویو؟ حتی ساب بعدی که قرار عکس توی لیست قرار بده را توی  If j.Success Then قرار دادن و فقط ارور گرفتم😀

سلام. چرا callsub ?!

وقتی از wait for  یا sleep استفاده شده مقدار رو این شکلی میتونید برگردونید (نوع برگشتی به جای int میتونید هر نوع دیگه ای میخواید اسفاده کنید)

https://www.b4x.com/android/forum/threads/b4x-resumable-subs-that-return-values-resumablesub.82670/

Sub Button1_Click
   Wait For(Sum(1, 2)) Complete (Result As Int)
   Log("result: " & Result)
   Log("after sum")
End Sub

Sub Sum(a As Int, b As Int) As ResumableSub
   Sleep(100)
   Log(a + b)
   Return a + b
End Sub
-------------------
Output:

    3
    result: 3
    after sum 

یا

Sub Button1_Click
   Dim rs As ResumableSub = Sum(1, 2)
   Wait For(rs) Complete (Result As Int)
   Log("result: " & Result)
   Log("after sum")
End Sub

callsub بین مازول(سرویس-اکتیویتی) یا موارد خاص معمولا استفاده میشه

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

خب مشکل بالا حل شد ولی هنوز ی مشکل هست

من ی عکس دالنود میکنم با HttpJob

https://s2.coinmarketcap.com/static/img/coins/64x64/1.png

و برای اینکه توی حافظه نگهش دارم از نوع رشته ذخیرش میکنم (حتما نیاز دارم رشته باشه و به هیچ وجه نمیتونم از نوع بیت مپ باشه) اما حالا چطوری توی ایمیج ویو نمایشش بدم راه هایی زیادی را امتحان کردم ولی هیچ کدوم جواب نداد

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

در ۱۴۰۰/۱۰/۸ در ۲۳:۰۰، DexterFstone گفته است:

خب مشکل بالا حل شد ولی هنوز ی مشکل هست

من ی عکس دالنود میکنم با HttpJob

https://s2.coinmarketcap.com/static/img/coins/64x64/1.png

و برای اینکه توی حافظه نگهش دارم از نوع رشته ذخیرش میکنم (حتما نیاز دارم رشته باشه و به هیچ وجه نمیتونم از نوع بیت مپ باشه) اما حالا چطوری توی ایمیج ویو نمایشش بدم راه هایی زیادی را امتحان کردم ولی هیچ کدوم جواب نداد

در اون مورد روش یا متد ذخیره و نمایش عکستون شاید مشکل داره. نیاز هست جتما کد هاتون را بزارید تا کسی بتونه نظر بده

ولی به صورت کلی

ذخیره عکس با فرمت jpg یا png

Dim x As B4XBitmap = YourBitmap
Dim out As OutputStream = File.OpenOutput(xui.DefaultFolder, "1.png", False)
x.WriteToStream(out, 100, "PNG")
out.Close

خوندن عکس ذخیره شده و گرفتن bitmap

https://www.b4x.com/android/forum/threads/loadbitmap-loadbitmapresize-loadbitmapsample.82693/#content

لود در ایمج ویوو (چند روش میشه استفاده کرد) :

Dim bg As Bitmap = LoadBitmapResize(File.DirAssets, "bg.png", ImageView1.Width, ImageView1.Height, True)
ImageView1.SetBackgroundImage(bg).Gravity = Gravity.CENTER
Public ImageView As B4XView
ImageView.SetBitmap(bitmap)

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

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

در ۱۴۰۰/۱۰/۸ در 23:43، rasool.g گفته است:

در اون مورد روش یا متد ذخیره و نمایش عکستون شاید مشکل داره. نیاز هست جتما کد هاتون را بزارید تا کسی بتونه نظر بده

ولی به صورت کلی

ذخیره عکس با فرمت jpg یا png

Dim x As B4XBitmap = YourBitmap
Dim out As OutputStream = File.OpenOutput(xui.DefaultFolder, "1.png", False)
x.WriteToStream(out, 100, "PNG")
out.Close

خوندن عکس ذخیره شده و گرفتن bitmap

https://www.b4x.com/android/forum/threads/loadbitmap-loadbitmapresize-loadbitmapsample.82693/#content

لود در ایمج ویوو (چند روش میشه استفاده کرد) :

Dim bg As Bitmap = LoadBitmapResize(File.DirAssets, "bg.png", ImageView1.Width, ImageView1.Height, True)
ImageView1.SetBackgroundImage(bg).Gravity = Gravity.CENTER
Public ImageView As B4XView
ImageView.SetBitmap(bitmap)

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

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

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

در ۱۴۰۰/۱۰/۸ در 23:46، DexterFstone گفته است:

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

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

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

به این نوشته ها یک نکاه بندازید. 

بیتمپ <> متن   =   بیتمپ <> رشته بایت <> متن با فرمت base64

bitmap to base64 و برعکسش رو باید جستجو کنید.

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

بایگانی شده

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

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

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