【问题标题】:image compression c# and recoverred in android图像压缩 c# 并在 android 中恢复
【发布时间】: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


【解决方案1】:

使用可能将图像保存为 SQL 中的字节数组 byte[] 的较低公共 那么你可以在Android中将byte[]转换成Bitmap

【讨论】:

  • 我正在这样做,但是我需要在存储到sql之前对其进行压缩
  • 那么您有 2 个选择:减小图像大小或将图像格式更改为 .PNG,例如您想要哪一个?
  • 缩小尺寸应该是解决办法
  • stackoverflow.com/questions/3885395/… 希望对您有所帮助。它的 C# 语言
  • 它现在存储良好,但尝试在 android 中显示时不断收到错误消息。这是代码:
猜你喜欢
  • 2011-09-21
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多