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
错误。这会使两只鸟一石二鸟