Android保存本地图片到SQLite
来源:互联网 发布:template.js if else 编辑:程序博客网 时间:2024/05/28 16:28
被否了以后竟然布置了一个完全不daga的需求,明明做了几个月,也演示了好多次,可现在说要重头做,做得不对。可你为什么不早说??,这就不是我可以心大地理解的范围了,四个月的努力一句做偏了,虽然做的很初级的东西,但是我只是一个很初级的小白,告诉朋友们,他们都同情我这个被玩的不成样子的小白,这是多不靠谱不负责的老师啊,但是努力还是要做,任务还是要完成,继续吧,真的很想毕业啊,毕竟项目还是要完成
现在的需求是:通过蓝牙获取图片、文字,然后通过安卓客户端中转,发送到服务器,
蓝牙—》APP,暂且不理,想想就觉得不容易,从来没碰过蓝牙协议,反正我不会
现在尝试了将文字、图片存储到了SQLite,但是效果很不好,因为图片多了,数据库就会变得很大,这里是将图片直接存到数据库的。虽然不能达到理想效果,但是还是先记录下来吧,也不是自己写的,但是从哪里抄来的也忘记了,所以直接点了转载
MainActivity
import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private DBOperate dbOperate; private SQLiteHelper helper; private Button read; private Button save; private ImageView showImv; private TextView id, carnum, breakrule; private String url; //要操作数据库操作实例首先得得到数据库操作实例 private Context context; //要操作数据库操作实例首先得得到数据库操作实例 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); helper = new SQLiteHelper(this, "REBOT.db", null, 2); init(); read.setOnClickListener(this); save.setOnClickListener(this); showImv.setOnClickListener(this); } private void init() { dbOperate = new DBOperate(this); read = (Button) findViewById(R.id.readBtn); save = (Button) findViewById(R.id.saveBtn); showImv = (ImageView) findViewById(R.id.showImv); id = (TextView) findViewById(R.id.id); carnum = (TextView) findViewById(R.id.carnum); breakrule = (TextView) findViewById(R.id.breakrule); } public void onClick(View view) { switch (view.getId()) { case R.id.saveBtn: save(url); break; case R.id.readBtn: showtable(); break; default: break; } } private void showtable() { SQLiteDatabase db = helper.getWritableDatabase(); Cursor cursor = db.query("User", null, null, null, null, null, null); if (cursor.moveToFirst()) { do{ id.setText(cursor.getString(cursor.getColumnIndex("_id"))); carnum.setText(cursor.getString(cursor.getColumnIndex("carnum"))); breakrule.setText(cursor.getString(cursor.getColumnIndex("breakrule"))); Log.d("1",cursor.getString(cursor.getColumnIndex("_id"))); Log.d("2",cursor.getString(cursor.getColumnIndex("carnum"))); byte[] imgData=dbOperate.readImage(); if (imgData!=null) { //将字节数组转化为位图 Bitmap imagebitmap = BitmapFactory.decodeByteArray(imgData, 0, imgData.length); //将位图显示为图片 showImv.setImageBitmap(imagebitmap); }else { showImv.setBackgroundResource(android.R.drawable.menuitem_background); } } while (cursor.moveToNext()) ; } cursor.close(); } private void save(String url){ dbOperate.save(); }}
SQLiteHelper//SQLiteimport android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;/** * Created by 允琪 on 2017/4/15. */public class SQLiteHelper extends SQLiteOpenHelper { private static final String dbname="REBOT.db"; private static final int version=2; private static SQLiteHelper dbHelper; //也可以不指定字段的类型、长度,因为int类型也可以保存Char类型的创建学生表 private final String createTb="CREATE TABLE User (_id INTEGER PRIMARY KEY AUTOINCREMENT,carnum VARCHAR2,breakrule VARCHAR,avatar BLOB)"; public SQLiteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } public SQLiteHelper(Context context){ super(context, dbname, null, version); } public static SQLiteHelper getInstance(Context context) { if (dbHelper == null) { //单例模式 dbHelper = new SQLiteHelper(context); } return dbHelper; } @Override public void onCreate(SQLiteDatabase db) { // 创建一个数据库表 User ,字段:_id、name、avatar。 db.execSQL(createTb); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }}类DBOperateimport 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 java.io.ByteArrayOutputStream;import java.io.IOException;/** * Created by 允琪 on 2017/4/15. */public class DBOperate { private SQLiteHelper dbhelper; private Context context; //要操作数据库操作实例首先得得到数据库操作实例 public DBOperate(Context context) { this.context=context; this.dbhelper = SQLiteHelper.getInstance(context); } public void save(){ SQLiteDatabase db = dbhelper.getWritableDatabase(); Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.camera); ContentValues cv=new ContentValues();// cv.put("_id", 1); cv.put("carnum","苏F1234"); cv.put("breakrule","违章"); cv.put("avatar", bitmabToBytes(context));//图片转为二进制 db.insert("User", null, cv); cv.clear(); cv.put("carnum","苏A1F33"); cv.put("breakrule","闯红灯"); cv.put("avatar", second(context));//图片转为二进制 db.insert("User", null, cv);// cv.clear();// cv.put("carnum","苏A84G5");// cv.put("breakrule","超速");// cv.put("avatar", bitmabToBytes(context));//图片转为二进制// db.insert("User", null, cv);// cv.clear();//// cv.put("carnum","苏A18D4");// cv.put("breakrule","压线");// cv.put("avatar", bitmabToBytes(context));//图片转为二进制// db.insert("User", null, cv);// cv.clear(); db.close(); } public byte[] readImage(){ SQLiteDatabase db = dbhelper.getWritableDatabase(); Cursor cur=db.query("User", new String[]{"_id","avatar"}, null, null, null, null, null); byte[] imgData=null; if(cur.moveToNext()){ //将Blob数据转化为字节数组 imgData=cur.getBlob(cur.getColumnIndex("avatar")); } return imgData; } //图片转为二进制数据 public byte[] bitmabToBytes(Context context){ //将图片转化为位图 Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.camera); int size = bitmap.getWidth() * bitmap.getHeight() * 4; //创建一个字节数组输出流,流的大小为size ByteArrayOutputStream baos= new ByteArrayOutputStream(size); try { //设置位图的压缩格式,质量为100%,并放入字节数组输出流中 bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); //将字节数组输出流转化为字节数组byte[] byte[] imagedata = baos.toByteArray(); return imagedata; }catch (Exception e){ }finally { try { bitmap.recycle(); baos.close(); } catch (IOException e) { e.printStackTrace(); } } return new byte[0]; } public byte[] second(Context context){ //将图片转化为位图 Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.qin); int size = bitmap.getWidth() * bitmap.getHeight() * 4; //创建一个字节数组输出流,流的大小为size ByteArrayOutputStream baos= new ByteArrayOutputStream(size); try { //设置位图的压缩格式,质量为100%,并放入字节数组输出流中 bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); //将字节数组输出流转化为字节数组byte[] byte[] imagedata = baos.toByteArray(); return imagedata; }catch (Exception e){ }finally { try { bitmap.recycle(); baos.close(); } catch (IOException e) { e.printStackTrace(); } } return new byte[0]; }}布局文件<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.uploadpic.MainActivity"> <Button android:text="read" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:id="@+id/readBtn"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/saveBtn" android:layout_centerHorizontal="true" android:layout_marginTop="124dp" android:id="@+id/showImv"/> <Button android:text="save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/saveBtn" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/saveBtn" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginLeft="12dp" android:layout_marginStart="12dp" android:layout_marginTop="22dp" android:id="@+id/id" android:textSize="24sp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/id" android:layout_alignRight="@+id/showImv" android:layout_alignEnd="@+id/showImv" android:id="@+id/carnum"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/carnum" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_marginRight="53dp" android:layout_marginEnd="53dp" android:id="@+id/breakrule"/></RelativeLayout>
0 0
- Android保存本地图片到SQLite
- android 保存图片到SQLite
- android 保存图片到SQLite
- Android 保存图片到SQLite
- Android 保存图片到SQLite
- android 保存图片到SQLite
- Android 保存图片到本地
- android保存图片到本地
- Android保存图片到本地
- Android保存图片到本地
- Android保存图片到本地
- Android 保存图片到本地
- Android:保存图片到Sqlite数据库
- Android:保存图片到Sqlite数据库
- Android:保存图片到Sqlite数据库
- Android 保存图片到Sqlite数据库
- Android 保存图片到SQLite,读出SQLite中的图片
- Android 保存图片到SQLite,读出SQLite中的图片
- android的背光调节
- 2.Springboot 之 Helloworld
- Android-自动化测试之MonkeyRunner教程(详细)
- 【MySQL基础】表的基本操作
- hbase使用Phoenix
- Android保存本地图片到SQLite
- Hibernate初探之单表映射笔记(2)
- jqgrid获取Column属性
- 求字符串的最长重复子串——Java实现
- DeepLearning——学习
- (VirtualBox)Linux系统上添加一块新磁盘
- Vue入门系列之Vue实例详解与生命周期(转载)
- Docker——Windows下使用方法
- Mysql——mysql数据库目录存放位置更改