【发布时间】:2014-09-29 14:04:21
【问题描述】:
我正在将来自 c# 应用程序的图像存储在 sql server 中并在 android 中显示。
我在 android 中遇到了内存问题,并且对 sql 的查询花费了很多时间,所以我想知道一种将 c# 中的图像压缩到例如 100 KB 并将其存储在 sql 中的方法这个尺寸。
--编辑
这是在android中显示图像时的代码:
Bitmap bitmap=BitmapFactory.decodeByteArray(myLote.getFoto(), 0, myLote.getFoto().length);
imageFoto.setImageBitmap(bitmap);
imageFoto 是 ImageView,“myLote.getFoto()”返回字节[]
08-06 18:03:41.300: E/AndroidRuntime(6462): FATAL EXCEPTION: main
08-06 18:03:41.300: E/AndroidRuntime(6462): java.lang.OutOfMemoryError
08-06 18:03:41.300: E/AndroidRuntime(6462): at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method)
08-06 18:03:41.300: E/AndroidRuntime(6462): at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:428)
08-06 18:03:41.300: E/AndroidRuntime(6462): at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:446)
08-06 18:03:41.300: E/AndroidRuntime(6462): at com.example.subasta.FragmentSubasta.onViewCreated(FragmentSubasta.java:109)
08-06 18:03:41.300: E/AndroidRuntime(6462): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:941)
08-06 18:03:41.300: E/AndroidRuntime(6462): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
08-06 18:03:41.300: E/AndroidRuntime(6462): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
08-06 18:03:41.300: E/AndroidRuntime(6462): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
08-06 18:03:41.300: E/AndroidRuntime(6462): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
08-06 18:03:41.300: E/AndroidRuntime(6462): at android.os.Handler.handleCallback(Handler.java:725)
08-06 18:03:41.300: E/AndroidRuntime(6462): at android.os.Handler.dispatchMessage(Handler.java:92)
08-06 18:03:41.300: E/AndroidRuntime(6462): at android.os.Looper.loop(Looper.java:137)
08-06 18:03:41.300: E/AndroidRuntime(6462): at android.app.ActivityThread.main(ActivityThread.java:5041)
08-06 18:03:41.300: E/AndroidRuntime(6462): at java.lang.reflect.Method.invokeNative(Native Method)
08-06 18:03:41.300: E/AndroidRuntime(6462): at java.lang.reflect.Method.invoke(Method.java:511)
08-06 18:03:41.300: E/AndroidRuntime(6462): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-06 18:03:41.300: E/AndroidRuntime(6462): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-06 18:03:41.300: E/AndroidRuntime(6462): at dalvik.system.NativeStart.main(Native Method)
--重新编辑
我现在没有收到任何错误,但没有显示任何内容 :( :
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap preview_bitmap = BitmapFactory.decodeByteArray(myLote.getFoto(), 0, myLote.getFoto().length, options);
imageFoto.setImageBitmap(preview_bitmap);
谢谢大家。
【问题讨论】:
-
您需要存储图像,还是可以将 URI 存储到其位置?
-
如果我错了,请纠正我,但无法从我的电脑获取图像,将其加载到 URL 并显示在 android 设备中对吗?
-
您将图像保存在文件夹中并在 SQL 中保存图像位置的 url .. 在客户端中,您只需获取 url 位置并读取图像。
-
在android中,通过URL获取图片,需要下载图片,所以需要相同的时间
-
这段代码有什么错误?
标签: c# android image compression