【问题标题】:Add logo to jpeg in Android在 Android 中将徽标添加到 jpeg
【发布时间】:2014-01-29 14:26:30
【问题描述】:

我想将公司的商业徽标添加到 Android 中的 jpeg 文件 [照片]。 试了好几次,把照片转成位图再添加logo,结果OutOfMemoryError。

编辑: 它现在可以工作,但是需要很多时间和内存...... 我的代码是:

Bitmap logo = BitmapFactory.decodeResource(
            mainActivity.getResources(), R.drawable.logo);
    Bitmap photo =BitmapFactory.decodeByteArray(jpeg[0], 0, jpeg[0].length);

    Bitmap combination = Bitmap.createBitmap(photo.getWidth(), photo.getHeight(), Bitmap.Config.RGB_565);

    Canvas comboImage = new Canvas(combination); 

    comboImage.drawBitmap(photo, 0f, 0f, null); 
    comboImage.drawBitmap(logo, 0f, 200, null); 



    try {
        FileOutputStream out = new FileOutputStream(mediaFile);
        combination.compress(Bitmap.CompressFormat.PNG, 100, out);
        out.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

Logcat 的输出:

01-29 15:40:44.154: I/dalvikvm-heap(5065): Grow heap (frag case) to 109.067MB for 25560592-byte allocation


01-29 15:40:44.184: I/Choreographer(5065): Skipped 36 frames!  The application may be doing too much work on its main thread.

你有什么建议?

非常感谢。卢卡斯

【问题讨论】:

  • 发布一些代码和错误堆栈
  • 所涉及的图像大小是多少?可能您正在尝试加载不适合您设备内存的图像。加载 jpeg 图像时,它会创建一个比原始 jpeg 更大(以字节为单位)的位图。尝试做同样的事情,但使用更小的图像。
  • @Christian:是的,较小的图像效果更好。但是这些图像只是在这个应用程序中使用相机创建的,我不想缩小这些图像。这就是为什么我正在使用方式搜索更好/更快/更少的内存。
  • 我认为你应该使用一些没有 16Mb 限制的 Android NDK。

标签: android bitmap out-of-memory jpeg


【解决方案1】:

如果有人遇到同样的问题,我建议阅读这篇文章,其中包含五个教训 Displaying Bitmaps Efficiently - Android Developers

感谢大家的帮助!

【讨论】:

    猜你喜欢
    • 2019-08-21
    • 2018-01-12
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    相关资源
    最近更新 更多