Java 在安装或运行期间,如何在sqlite数据库中(静态)存储映像?
说明: 我正在开发一个裁缝管理应用程序。我为应用程序存储了一些设计(服装)图像。有些图像是静态存储的,有些图像是动态存储的。动态意味着用户还可以通过相机和多媒体资料存储图像。我已经完成了这项任务,但我混淆了另一项任务 问题: 我想在安装期间将图像存储在sqlite数据库中。我希望应用程序只执行此任务一次,而不是每次用户启动应用程序时 这是我的代码:Java 在安装或运行期间,如何在sqlite数据库中(静态)存储映像?,java,android,image,sqlite,Java,Android,Image,Sqlite,说明: 我正在开发一个裁缝管理应用程序。我为应用程序存储了一些设计(服装)图像。有些图像是静态存储的,有些图像是动态存储的。动态意味着用户还可以通过相机和多媒体资料存储图像。我已经完成了这项任务,但我混淆了另一项任务 问题: 我想在安装期间将图像存储在sqlite数据库中。我希望应用程序只执行此任务一次,而不是每次用户启动应用程序时 这是我的代码: @Override protected void onCreate(Bundle savedInstanceState) {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.update_design_activity);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.kamee_elbow_imagey);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG,0, stream);
byte[] bytearry=stream.toByteArray();
db.insertIntoImageTable("elbow",bytearry);
}
此代码重复存储图像。我只想存储一次数据和图像
如何让应用程序只存储一次图像,而不是每次应用程序启动时重复存储?将图像存储到隐藏文件夹。并将图像的路径插入数据库
private void storeImage() {
try {
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/.imgdir/filename.jpg";
File file = new File(path);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.kamee_elbow_imagey);
FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG,100, out);
out.flush();
out.close();
db.insertImagePathToDB(path);
} catch (Exception e) {
e.printStackTrace();
}
}
private void getBitmapFromDisk(){
String path = db.queryImagePath();
Bitmap bitmap = BitmapFactory.decodeFile(path);
}
假设图像名称是唯一的,然后执行一个简单查询,检查图像名称是否存在于以下行中:-
public boolean checkImageExists(String imagename) {
Cursor csr = db.Cursor("yourimagestablename",null,"nameoftheimagenamecolumn=?",new String[]{imagename},null,null,null);
int rowcount = csr.getCount();
csr.close();
return rowcount > 0;
}
然后你就可以做了
if(!checkImageExists("elbow")) {
db.insertIntoImageTable("elbow",bytearry);
}
您仍然不应该直接在sql中存储图像。这个问题有点令人困惑。如果您想在sqlite中存储一些映像,那么应该只包含sqlite db和应用程序,其中已经包含了映像。也没有什么内在的原因不应该将它们存储在sqlite中——只是它提供给您的实际好处很少甚至没有。为什么?我直接插入了数据,但上面的代码中没有显示数据库代码。图像已添加,但每次添加都是一个图像。