私は最近、自分のAndroidタブレットアプリケーションでORMLiteにデータベースを切り換えました。これまでのところとても良い、ほとんどのものがリファクタリング/コード化されています。もともとデータベースにBLOBとして格納されていたものに問題があります。ORMLiteと画像はBLOBとしてAndroidに保存されました
@DatabaseField
String picture;
:最高の私が持っている、それが今の文字列でなければならない言うことができる、
byte[] imageBytes;
が、私はORMLiteでそれを使用することができるとは思わない。私の元のデータモデルでは、このように見えました
しかし、今、私は私がデータベースにしてからデータをフェリーするために、このようなコードを使用していた...などバイト、として、それらのデータビットを読み書きする方法として混乱しています:
...
//Set the clients image to what was captured...
Bitmap resized2= android.graphics.Bitmap.createScaledBitmap(thumbnail, thumbnail.getWidth()/2, thumbnail.getHeight()/2, true);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
resized2.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object
byte[] b = baos.toByteArray();
mClient.setImageBytes(b);
myImage.setImageBitmap(resized2);
//do save to the database of the image to the blob whose column is picture
ContentValues initialValues = new ContentValues();
initialValues.put("picture", mClient.getImageBytes());
String [] strArray = {""+sid};
long n = dbAdapter.updateRecordsInDB("clients", initialValues, "_id=?", strArray);
だから今のthats私はイメージをどのように保存したのですか、私はsuではありませんORMLiteにBLOBSがなく、文字列を使用する必要がある場合はどうすればいいですか?
は完全を期すために、これは私は、画像を表示する方法を次のとおりです。
if(mClient.getImageBytes().length <= 1) //no image in database, thats fine use generic
myImage.setImageResource(R.drawable.sillo); // create a sillouhtette face icon here...
else
myImage.setImageBitmap((BitmapFactory.decodeByteArray(mClient.getImageBytes(),0, (mClient.getImageBytes()).length)));
それでは、私はデータベースの内と外、これらの画像を取得するためにしなければならない、との正しい文字列のフィールドタイプで行います「ブロブ」?
何らかの理由でレンダスクリプトDataTypeを取得しましたが、名前を完全に修飾しなければならず、すべてが良好でした。ありがとう! – Codejoy
+1いいね...私の時間を保存しました –
@Gray ormlite_config.txtファイルにbyte []を設定する方法は分かっていますか? coz私はこのファイルをthtファイルに追加しました。#--field-start-- fieldName = image1 #--field-end--しかし、dbにファイルを保存しようとすると実行時例外が発生します。 –