2016-03-07 55 views
0

我需要在圖像上編寫文本並將其保存爲jpg格式。我必須將圖像壓縮到80%質量以減少文件大小。圖像本身看起來不錯,但其上的文字看起來不太吸引人。Android Canvas - 以80%的質量壓縮圖像,但保留覆蓋文本100%

有沒有辦法將圖像部分縮小到80,但在合併時將文本部分保留爲100?提前致謝。

bitmap = BitmapFactory.decodeFile(Story.imagesPath.get(position)); 
newBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), config); 
Canvas canvas = new Canvas(newBitmap); 
canvas.drawBitmap(bitmap, 0, 0, null); 

Paint bgPaint=new Paint(); 
bgPaint.setColor(bgColor); 
Paint paintText = new Paint(Paint.ANTI_ALIAS_FLAG); 
canvas.drawText(text, width/2, text_bottom, paintText); 

File newFile = new File(dir, java.util.UUID.randomUUID() + ".jpg"); 
FileOutputStream fileOutputStream = new FileOutputStream(newFile); 
bm.compress(Bitmap.CompressFormat.JPEG, 80, fileOutputStream); 

回答

0

不,沒有。壓縮函數不知道任何關於文本的內容。它只是看像素。它只能在整個圖像上以1質量級別進行壓縮。如果圖像質量不夠好,請提高質量或切換到無損編碼。

+0

感謝您的快速回復。不能有任何解決方法來實現這一目標嗎?將它們分別以不同的質量保存並以100%的質量再次合併可能有效嗎? –

+0

你可以。你會以這種方式獲得很少的收益,增加很多複雜性。除非你有其他原因,否則我不會這樣做。 –

+0

非常感謝。質量保持在80%,但增加了位圖維度。這增加了文本質量,但仍然處於良好的文件大小。 –