我打算创建一个这样的活动源:
我想知道,我将如何检索图像以及如何将其存储在我的MySQL数据库中。救救我!
答案 0 :(得分:2)
以下是如何操作
要下载图像,请使用Universal Image Loader
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(context));
OR
ImageLoaderConfiguration config = new
ImageLoaderConfiguration.Builder(context)
.maxImageWidthForMemoryCache(800)
.maxImageHeightForMemoryCache(480)
.httpConnectTimeout(5000)
.httpReadTimeout(20000)
.threadPoolSize(5)
.threadPriority(Thread.MIN_PRIORITY + 3)
.denyCacheImageMultipleSizesInMemory()
.build();
imageLoader.init(config);
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.loading)
.cacheInMemory()
.cacheOnDisc()
.build();
imageLoader.displayImage(ProductsImageURL,imagView,options, new ImageLoadingListener(){});
在此ImageLoadingListener中,您将获得一个在加载完成时调用的方法并将图像另存为字符串
或建立任何http连接以下载图片How to download and save an image in Android
下载图像后,将其转换为字符串并将其存储在数据库中
public Bitmap StringToBitMap(String encodedString) {
try {
byte[] encodeByte = Base64.decode(encodedString, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(encodeByte, 0,
encodeByte.length);
return bitmap;
} catch (Exception e) {
e.getMessage();
return null;
}
}
public String BitMapToString(Bitmap bitmap) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] b = baos.toByteArray();
String temp = Base64.encodeToString(b, Base64.DEFAULT);
return temp;
}
答案 1 :(得分:0)
如果您想将图像本身存储到数据库中,以下是一般步骤。
我。使用其URL检索图像并将其作为byte []保存在内存中。有几种方法可以做到这一点,包括创建一个ByteArrayBuffer并在其末尾附加字节。然后,您可以使用ByteArrayBuffer.toByteArray()检索最终字节[]。
II。您需要创建一个包含BLOB类型列的表,例如
CREATE TABLE image (id INTEGER PRIMARY KEY AUTOINCREMENT, url TEXT, data BLOB)
III。然后,您可以像插入任何其他数据类型一样插入图像byte [],例如,通过创建ContentValues然后将其传递给SQLiteDatabase.insert()。
IV。从SQLite中检索byte []并构建一个图像。使用Cursor.getBlob()来获取byte [],然后执行:
ByteArrayInputStream byteArrayImageStream = new ByteArrayImageStream(yourByteArray);
Bitmap yourImage = BitmapFactory.decodeStream(byteArrayImageStream);