PDA

View Full Version : عکس داخل دیتا بیس sql lite



rooterror
یک شنبه 11 بهمن 1394, 13:08 عصر
سلام چجوری عکس رو همراه با متن در برنامه با استفاده از دیتابیسم نمایش بدم ؟


میشه مثلا کد ایمج ویو رو کامل بزارم تو دیتابیسم ؟ اونوقت نمایش میده ؟ آدرسش باید به چه صورت باشه ؟

JYasProgramer
دوشنبه 12 بهمن 1394, 08:37 صبح
سلام دوست من بله میشه شما تصویر رو در فیلد های دیتابیس ذخیره کنی
باید نوع فیلد مربرطه در دیتابیس از نوع BLOB باشه
و برای خوندن و نوشتن داده در دیتابیس هم باید روالشو یاد داشته باشی
کار با دبتابیس رو یاد داری؟؟

CRbreeze
دوشنبه 12 بهمن 1394, 18:03 عصر
منم همین سوال رو دارم کار با دیتا بیس رو بلدم ... ولی منظور شما رو متوجه نشدم که میگید باید تصویر رو در فیلدهای دیتا بیس ذخیره کرد ... یعنی دقیقا به چه شکل؟ چی باید نوشت؟

rooterror
دوشنبه 12 بهمن 1394, 18:12 عصر
بله کار با دیتا بسیو بلدم

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

بعد از ذخیر کردن تصویر چگونه باید اون رو خوند ؟ مثلا گذاشتش وسط متن ها چچوری از فیلد بخونم یعنی

JYasProgramer
سه شنبه 13 بهمن 1394, 08:56 صبح
ببینید فرض میکنم تصویر رو از فولدر Drawable دریافت کردی
خب تصویر مورد نظر رو باید تبدیل بیت مپ و سپس از بیت مپ تبدیل به بایت آرایه کنی و سپس اون بایت آرایه رو در فیلد بلاب دیتابیس ذخیره کنی
موقه خوندن هم باید بایت آرایه رو تبدیل به بیت مپ کنی و سپس اون بیت مپ رو در imageview خودت نمایش بدی
پس شما باید تبدیل تصویر به بایت آرایه و بلعکس رو سرچ کنی
how to convert image to byte array in android
اینو در گوگل سرچ کن
و
how to convert bytearray to bitmap in android

rooterror
پنج شنبه 15 بهمن 1394, 09:47 صبح
ببینید فرض میکنم تصویر رو از فولدر Drawable دریافت کردی
خب تصویر مورد نظر رو باید تبدیل بیت مپ و سپس از بیت مپ تبدیل به بایت آرایه کنی و سپس اون بایت آرایه رو در فیلد بلاب دیتابیس ذخیره کنی
موقه خوندن هم باید بایت آرایه رو تبدیل به بیت مپ کنی و سپس اون بیت مپ رو در imageview خودت نمایش بدی
پس شما باید تبدیل تصویر به بایت آرایه و بلعکس رو سرچ کنی
how to convert image to byte array in android
اینو در گوگل سرچ کن
و
how to convert bytearray to bitmap in android



مرسی خب ببینید من الان توی کلاس دیتابیسم این رو تعریف کردم


public byte[] getpic(int id){
Cursor cu=mydb.rawQuery("select * from content where ID="+id , null);
cu.moveToFirst();
byte[] s;
s=cu.getBlob(6);
return s;
}

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

الان تویی فایل xml یه ایمیج ویو گذاشتم

تویی کلاس فایل xml چجوری تصویرو دریافت کنم ؟

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

JYasProgramer
پنج شنبه 15 بهمن 1394, 11:19 صبح
...تویی کلاس فایل xml چجوری تصویرو دریافت کنم ؟...
با کد جاوا باید تصویر رو به ImageView اضافه کنی
روش تبدیل بایت آرایه رو به بیت مپ باید یاد داشته باشی اگه نه با یه سرچ ساده که توو پست قبلی هست میتونی پیداش کنی

msroid
پنج شنبه 15 بهمن 1394, 14:18 عصر
مرسی خب ببینید من الان توی کلاس دیتابیسم این رو تعریف کردم


public byte[] getpic(int id){
Cursor cu=mydb.rawQuery("select * from content where ID="+id , null);
cu.moveToFirst();
byte[] s;
s=cu.getBlob(6);
return s;
}

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

الان تویی فایل xml یه ایمیج ویو گذاشتم

تویی کلاس فایل xml چجوری تصویرو دریافت کنم ؟

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



Bitmap bitmap = BitmapFactory.decodeByteArray(s, 0, s.length);

rooterror
پنج شنبه 15 بهمن 1394, 14:49 عصر
Bitmap bitmap = BitmapFactory.decodeByteArray(s, 0, s.length);



ببخشید الان این کد میاد چیکار میکنه ؟

الان من image view رو کجا تعریف کنم که مثلا بگم از خونه 6 که عکس هست بخون و نمایش بده ؟

ممنون بابت راهنماییتون

msroid
پنج شنبه 15 بهمن 1394, 15:17 عصر
الان یه متد داری به نام getpic. به جای اینکه []byte برگردونه اون یه تیکه کد رو هم بهش اضافه کن و Bitmap برگردون و بعدش مقدار برگشتی که یه تصویر از نوع Bitmap هست رو میتونی به imageView بدی:

imageView.setImageBitmap(bitmap);

rooterror
پنج شنبه 15 بهمن 1394, 16:51 عصر
ممنون از راهنماییتون ولی من موفق نشدم شاید به خاطر سواد کم برنامه نویسیم هست


حالا یه سوال دیگه ذهنمو مشغول کرده میخواستم ببینم میشه یه فایل html را دخل دیتا بیس گذاشت ؟

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

msroid
پنج شنبه 15 بهمن 1394, 19:33 عصر
برای اینکه بهتر بتونم راهنماییت کنم اول بگو دقیقا این تصویری که میخوای بذاری توی دیتابیس کجا هست...؟؟ قراره از نت بخونی بعد اونجا ذخیره کنی...؟؟ چون اگه داخل پوشه assets و یا drawable همراه برنامه گذاشته باشی که دیگه نیازی نیست توی دیتابیس ذخیره بشه...!!

توی اندروید با html هم میشه کار کرد اصلا یه متد با همین نام وجود داره. اما شما اول بگو دقیقا میخوای عکس و متن رو کجا نشون بدی...؟؟ این عکس و متن در ابتدا کجا هستن...؟؟ خودت متن داری میخوای نشون بدی یا اینکه کاربر متن وارد میکنه شما توی دیتابیس ذخیره میکنی و بعد نشون میدی...؟؟
نیازی به php نیست.

rooterror
جمعه 16 بهمن 1394, 16:49 عصر
سلام ممنو بابت راهنمایی

من دارم یه برنامه آموزشی درست میکنم که همهی متن ها از دیتا بیس خونده میشه مثلا 4 تا خط متن بعد وسطش یه عکس قرار میگیره دوباره موضوع بعدی همینطور

چند خط متن بعد عکس ولی نمیدونم چطور اینکارو کنم ، عکس ها تو پوشه drawable لازم بشه اینجا هم میتوننم انتقال بدم assets

البته من تویی بعضی از برنامه ها اندروید دیدم که با html کار میکنن مثلا متن داخل html رو اشتراک میزارن یا به لیست علاقه مندی ها اضافه میکنن

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

msroid
جمعه 16 بهمن 1394, 21:01 عصر
این یعنی اینکه شما از قبل یه دیتابیس میسازی و اون دیتابیس رو همراه برنامه روی گوشی طرف نصب میکنی. مگه اینکه بخوای به صورت آنلاین وصل بشه به یه وب سرویس و از اونجا دیتابیس رو دانلود کنه.
اگر دیتابیس رو همراه برنامه بخوای بذاری مجبوری مثلا بذاریش توی پوشه assets و وقتی برنامه نصب شد اونو کپی کنی توی یه فولدر خاص روی گوشی کاربر. تا جایی که من میدونم وقتی توی خود برنامه دیتابیس آماده قرار میدی بعدا نمیشه دیگه از تو برنامه حذفش کرد چون پوشه های برنامه فقط خواندنی هستند(البته شاید جدیدا بشه یا روش دیگه ای وجود داشته باشه که من نمیدونم امیدوارم اگه همچین چیزی هست بقیه دوستان اطلاع بدن) برای همین شما فقط متن رو داخل دیتابیس قرار میدی و دیگه تصاویر رو داخل اون قرار نمیدی بلکه توی هر رکورد وقتی متن رو وارد کردی اسم فایل تصویر مرتبط با اون متن رو هم وارد میکنی.
حالا هر وقت خواستی اطلاعات رو از دیتابیس بخونی متن رو که داری اسم تصویر رو هم که داری پس به وسیله اون اسم تصویر رو هم از پوشه مورد نظر میخونی.
حالا میتونی از یه custom listview استفاده کنی. یه فایل xml میسازی برای استفاده به عنوان سطر. مثلا توی اون یه textview داری و زیرش یه imageview. خب این توی تمام سطرهای listview تکرار میشه.
شما متن و تصویر رو میخونی و از طریق یه custom adapter اونارو به textview و imageview میدی و در نهایت اون آداپتر رو به listview.
اینجوری باید مشکلت حل بشه.

CRbreeze
سه شنبه 20 بهمن 1394, 09:02 صبح
این یعنی اینکه شما از قبل یه دیتابیس میسازی و اون دیتابیس رو همراه برنامه روی گوشی طرف نصب میکنی. مگه اینکه بخوای به صورت آنلاین وصل بشه به یه وب سرویس و از اونجا دیتابیس رو دانلود کنه.
اگر دیتابیس رو همراه برنامه بخوای بذاری مجبوری مثلا بذاریش توی پوشه assets و وقتی برنامه نصب شد اونو کپی کنی توی یه فولدر خاص روی گوشی کاربر. تا جایی که من میدونم وقتی توی خود برنامه دیتابیس آماده قرار میدی بعدا نمیشه دیگه از تو برنامه حذفش کرد چون پوشه های برنامه فقط خواندنی هستند(البته شاید جدیدا بشه یا روش دیگه ای وجود داشته باشه که من نمیدونم امیدوارم اگه همچین چیزی هست بقیه دوستان اطلاع بدن) برای همین شما فقط متن رو داخل دیتابیس قرار میدی و دیگه تصاویر رو داخل اون قرار نمیدی بلکه توی هر رکورد وقتی متن رو وارد کردی اسم فایل تصویر مرتبط با اون متن رو هم وارد میکنی.
حالا هر وقت خواستی اطلاعات رو از دیتابیس بخونی متن رو که داری اسم تصویر رو هم که داری پس به وسیله اون اسم تصویر رو هم از پوشه مورد نظر میخونی.
حالا میتونی از یه custom listview استفاده کنی. یه فایل xml میسازی برای استفاده به عنوان سطر. مثلا توی اون یه textview داری و زیرش یه imageview. خب این توی تمام سطرهای listview تکرار میشه.
شما متن و تصویر رو میخونی و از طریق یه custom adapter اونارو به textview و imageview میدی و در نهایت اون آداپتر رو به listview.
اینجوری باید مشکلت حل بشه.

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

msroid
شنبه 24 بهمن 1394, 16:04 عصر
ببخشید دوست عزیز من این حرفتون رو متوجه نشدم که باید دیتا بیس رو تو یه فولدر خاصی از گوشی کاربر کپی کنه!
مثلا اگه من از یک دیتا بیسی که تو پوشه asset کپی شده دارم تو برنامه ازش استفاده میکنم و اطلاعات میگیرم رو تو فایل گوشی کاربر کپی نکنم ... فایل apk برنامه من شامل اون دیتابیس نخواهد بود؟ یعنی اطلاعات دیتابیس من رو نمیخونه؟


پوشه assets یک پوشه فقط خواندنی(Read-Only) هست و امکان کار با دیتابیس در این پوشه وجود نداره به همین دلیل شما باید دیتابیس ساخته شده که در این پوشه قرار داره رو به جایی بر روی حافظه داخلی و یا خارجی انتقال بدین تا بتونین ازش استفاده کنین.