ذخیره ی عکس در دیتابیس
مدیریت گفتگو
سلام دوستان ، من یک لیست ویو دارم که شامل یک imageView و یک textView هست . حالا می خوام از طریق دیتابیس و استفاده از SQLite Manager این لیست ویو رو دیتاهاش رو پر کنم. داخل SQLite Manager یک جدول درست کردم و براش ستون های imageView و textView رو ساختم ولی نمیدونم که چه طوری باید عکس ها رو بریزم توی جدول ؟ نوعش رو باید TEXT بزارم یا LONGBLOB ؟ عکس هام داخل فولدر drawable هستن الان . ممنون بچه هااا !!!
بچه هاااااااااااااا مشکلم خیلی ضروری هست :((((((
پاسخها 2
مشاهده پاسخ صحیحچندتا راه برای ذخیره عکس وجود داره،بنده پیشنهاد میکنم نوع تصویر رو text در نظر بگیری و با کد زیر اونرو در دیتا بیس ذخیر کن
private byte[] getBitmapToByte(Bitmap bmp, int quality) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(CompressFormat.PNG, quality, stream);
return stream.toByteArray();
}
public void insertImage(Bitmap img) {
try {
byte[] data = getBitmapToByte(img, 100);
String encodedImage = Base64.encodeToString(data, Base64.DEFAULT);
query = "insert into image(data)" + "values('" + encodedImage + "')";
G.database.execSQL(query);
} catch (Exception e) {
Toast.makeText(G.context, G.ERROR_SYSTEM, Toast.LENGTH_LONG).show();
}
}
تو کد بالا من برای تصاویر یک جدول جدا در نظر گرفتم که شما میتونید بعنوان یک فیلد از جدول مد نظرتون قرارش بدین
امیدوارم پاسخ واضح بوده باشه
نظرات
در روشی که کاربر reza ذکر کردند باعث میشه دیتابیس خیلی سنگین و حجیم بشه ،این موضوع زمانی که رکوردها زیاده خیلی محسوس است.
به نظرم اگر مسیر عکس های شما مشخص است (بر روی سرور یا در پوشه مشخصی مانند drawable یا در پوشه ای بر روی کارت حافظه) کافی است اسم عکس ها را در دیتابیس ذخیره کنید.
نظرات
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
نظرات