嗨,在我的項目中,我有一個搜索欄,用戶將在其中輸入動物名稱,我的應用程序將顯示該動物(.gif)的動畫圖片。 我目前在我的SQLite數據庫中保存圖像的路徑。有兩個問題我有在SQLite中保存多個圖像
a)我的數據庫目前只包含1個圖像我該如何擴展它,是否必須爲每個圖像文件再次編寫代碼?
b)搜索將如何工作?它會按名稱搜索圖像,還是必須爲圖像標記製作另一個列,然後再通過它進行搜索。
這裏是我的代碼:
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ImageDatabase extends Activity{
private ImageView mImageView;
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mImageView = (ImageView) findViewById(R.id.image_view);
db = openOrCreateDatabase("Image.db", Context.MODE_PRIVATE, null);
db.execSQL("Create Table if not exists tb (a blob)");
}
public void saveImage(View view){
try {
FileInputStream fis = new FileInputStream("/storage/sdcard/gif_file.gif");
byte[] image = new byte[fis.available()];
fis.read(image);
ContentValues values = new ContentValues();
values.put("a", image);
db.insert("ImageTable", null, values);
fis.close();
}
catch (IOException e){
e.printStackTrace();
}
}
public void getImage(View view){
Cursor c = db.rawQuery("select = from tb", null);
if (c.moveToNext()){
byte[] image = c.getBlob(0);
Bitmap bmp = BitmapFactory.decodeByteArray(image, 0, image.length);
mImageView.setImageBitmap(bmp);
}
}
}
我目前計劃在我的應用程序中添加150個動物,用戶無法添加或刪除它們,只能讀取它們。所以我認爲按名稱搜索應該這樣做。其次,所以我的代碼必須看起來像FileInputStream fis = new FileInputStream(「/ storage/sdcard/Images)」;並且在此文件夾中將是我的圖像,所以我將能夠以這種方式讀取它們嗎? – HeroicJokester
@HeroicJokester您應該提供更多關於應用程序體系結構的細節:你是否將應用程序中的圖像嵌入到應用程序中?是否從網絡上下載它們?基於這些要點,最佳方法可以改變 – fasteque
是的,我準備了所有的150個gif,我想添加它們通過將它們存儲在手機的內部或外部存儲器 用戶不能編輯或更改它們,用戶只需搜索動物的名稱,我的應用程序將顯示該名稱的圖像 那就是所有的功能是 (PS即時通訊考慮增加語音輸入,但以後也是如此)。 – HeroicJokester