嗨,在我的项目中,我有一个搜索栏,用户将在其中输入动物名称,我的应用程序将显示该动物(.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