Android 如何在不加载所有位图的情况下标记jpeg文件并保存

Android 如何在不加载所有位图的情况下标记jpeg文件并保存,android,optimization,bitmap,Android,Optimization,Bitmap,我正在开发一个应用程序,在那里我可以拍照,我需要在图片的一角写一些文字。我已经有了在白色矩形上绘制黑色文本的功能: private void tagPhoto(Bitmap bitmap){ // Initiates paint object for canvas Paint p = getMarker(); // Initialize canvas Canvas tempCanvas = new Canvas(bitmap); // Measure

我正在开发一个应用程序,在那里我可以拍照,我需要在图片的一角写一些文字。我已经有了在白色矩形上绘制黑色文本的功能:

private void tagPhoto(Bitmap bitmap){

    // Initiates paint object for canvas
    Paint p = getMarker();

    // Initialize canvas
    Canvas tempCanvas = new Canvas(bitmap);

    // Measure text
    p.getTextBounds(text, 0, text.length(), textFrame); // textFrame is a Rect object

    // Draw frame for text
    tempCanvas.drawRect(0, 0,
            textFrame.width() + 2* MARGIN,  textFrame.height() + 2* MARGIN,
            p);

    p.setColor(Color.BLACK);

    // Write the mark on the canvas
    tempCanvas.drawText(text, MARGIN, textFrame.height() + MARGIN, p);

}
然后我将位图保存回原来的文件。我正在搜索优化此代码

搜索时,我正在搜索,无意中发现了
BitMapRegionCoder
,它只帮助加载位图的一部分。我想知道是否可以使用它,然后将修改后的部分保存在源位图上,而不将其加载到缓存中


或者还有其他我不知道的方法可以有效地标记Jpeg文件吗?

您将无法准确地执行您想要执行的操作。从技术上讲,你可以打开JPG,只写回更改的部分,但这比我想象的要麻烦得多。保存整个位图有问题吗?我在一些旧设备上遇到了一些
OutOfMemory
错误。这会使两只鸟一石二鸟,你将不能完全做你想做的事。从技术上讲,你可以打开JPG,只写回更改的部分,但这比我想象的要麻烦得多。保存整个位图有问题吗?我在一些旧设备上遇到了一些
OutOfMemory
错误。这会使两只鸟一石二鸟