آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ذخیره ی عکس در دیتابیس

MarAnd  8 سال پیش  8 سال پیش
0 0

سلام دوستان ، من یک لیست ویو دارم که شامل یک imageView و یک textView هست .  حالا می خوام از طریق دیتابیس و استفاده از  SQLite Manager این لیست ویو رو دیتاهاش رو پر کنم. داخل SQLite Manager یک جدول درست کردم  و براش ستون های imageView و textView رو ساختم ولی نمیدونم که چه طوری باید عکس ها رو بریزم توی جدول ؟ نوعش رو باید TEXT بزارم یا LONGBLOB ؟ عکس هام داخل فولدر drawable هستن الان .  ممنون بچه هااا !!! 

بچه هاااااااااااااا مشکلم خیلی ضروری هست :((((((

 برای این سوال 2 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
reza  8 سال پیش
+1 0

چندتا راه برای ذخیره عکس وجود داره،بنده پیشنهاد میکنم نوع تصویر رو 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();
}
}

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

 

امیدوارم پاسخ واضح بوده باشه

0 0
الان من وقتی میخام به جدول یک رکورد جدید اضافه کنم ، تو ستون مربوط به عکس ، اسم عکس رو فقط بنویسم ؟ یعنی مثلا : pic_1.png ؟؟ نوعش هم باید بنویسم یا فقط pic_1 ؟؟ ببخشین بچه ها من یه کم مشکل دارم با این موضوع . مممنون میشم اگه راهنماییم کنین. (8 سال پیش)
پاسخ به سوال 
Morteza  8 سال پیش
+1 0

 پاسخ صحیح

در روشی که کاربر reza ذکر کردند باعث میشه دیتابیس خیلی سنگین و حجیم بشه ،این موضوع زمانی که رکوردها زیاده خیلی محسوس است.
به نظرم اگر مسیر عکس های شما مشخص است (بر روی سرور یا در پوشه مشخصی مانند drawable یا در پوشه ای بر روی کارت حافظه) کافی است اسم عکس ها را در دیتابیس ذخیره کنید.

0 0
عکس ها رو در پوشه ی drawable گزاشتم . یعنی میگین که مثلا وقتی میخام رکورد اضافه کنم به ستون عکس ها بنویسم : pic_1.png ( اسم عکسم هست ) . اون وقت نوع این ستون باید چی باشه ؟ دستور اضافه کردن توی اندروید استودیو ( همون ...INSERT INTO ) داخل اون باید مسیر عکس رو بدم ؟؟ (8 سال پیش)
0 0
یه سوال دیگه هم داشتم . من طبق اموزش های استاد روی sd card یک فولدر ساختم و داخلش یک فایل به اسم database.sqlite و این فایل رو داخل sqlite manager براش pull کردم . ولی در این صورت ایا این عکس ها داخل sd card من ذخیره میشن ؟ یعنی باید این عکس ها رو توی فایل apk. ذخیره کنم ؟؟ یا اینکه اصلا باید روی همون sd card باشه ؟؟ (8 سال پیش)
+1 0
جواب سوال اول : شما فقط کافی است اسم عکس های موجود در پ.شه drawable را در دیتابیس ذخیره کنید ،نوع ستون را نیز می تونید از نوع TEXT درنظر بگیرید ،پیشنهاد میکنم آموزش های استفاده از بانک های اطلاعاتی SQLite و ListView و تصاویر پرحجم آنلاین! را ببیندید. (8 سال پیش)
+1 0
جواب سوال دوم : در این روشی که درموردش صحبت کردیم فقط نام عکس ها در دیتابیس ذخیره شده نه خود عکس ها! عکس ها در داخل خود Apk قرار داره.البته این روش زمانی پیشنهاد میشه که شما تعداد کمی عکس با حجم کم دارید در غیر این صورت حجم فایل apk شما زیاد و غیرقابل دانلود برای کاربر میشه. (8 سال پیش)
0 0
ممنونم از اینکه وقت گزاشتین ، بله همون جور که گفتین اموزش local database رو دیدم . البته از یک تکه کد دیگه ای هم استفاده کردم که بعد از اینکه مقدارش رو از دیتابیس خوندم میاد عکس رو برام ست میکنه . راهنماییهاتون واقعا مفید بود . :) (8 سال پیش)
0 0
در صورتی که جواب مفید بود لطفا با انتخاب گزینه پاسخ صحیح بقیه کاربران رو نیز راهنمایی کنید. (8 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .