我正在寫一些文字的圖像將被壓縮。在圖像上寫入文本而不增加大小?
圖片SIE 2048 x 1536
東西PX
我第一次嘗試寫第一 它拋出內存溢出異常
的話,我首先將其壓縮到1024 x 768
然後寫上的文字圖片
它Image KB's從100KB
增加到640KB
在寫文字,我可以compromise
在壓縮質量的Image quality but not the text Quality
設置爲30
文本還要downsample
問題:
沒有任何過程
write then compress
或Compress then Write
不更改ImageSize(以KB爲單位)的文本?我希望儘可能減少圖像大小(以KB爲單位)?
而且當inSampleSize設置爲3時,它不起作用,並且只有使用1,2,4的2048,1024,512的圖像被創建爲輸出我想要一些尺寸爲700px的圖像保持縱橫比。
代碼:。對於StampingImage
public void stampMyImage(String filePath, String text, Bitmap bitmap) {
String[] str = text.split("\n");
filePath = "/sdcard/geoTag/1imagelong_001_001_0002_0002_1135_130708144229.jpg";
bitmap = BitmapFactory.decodeFile(filePath);
if (bitmap != null) {
Bitmap dest = null;
try {
dest = bitmap.copy(bitmap.getConfig(), true);
} catch (OutOfMemoryError e1) {
Log.e("Exception", e1.getMessage());
e1.printStackTrace();
} catch (Error e) {
Log.e("Exception", e.getMessage());
e.printStackTrace();
}
Canvas cs = new Canvas(dest);
Typeface tf = Typeface.create("Verdana", Typeface.BOLD);
Paint tPaint = new Paint();
tPaint.setAntiAlias(true);
tPaint.setTextSize(40);
tPaint.setTextAlign(Align.LEFT);
tPaint.setTypeface(tf);
tPaint.setColor(Color.RED);
tPaint.setStyle(Style.FILL_AND_STROKE);
cs.drawBitmap(bitmap, 0f, 0f, null);
float textHeight = tPaint.measureText("yY");
int index = 0;
for (String Oneline : str) {
cs.drawText(Oneline, 20f, (index + 1) * textHeight + 25f,
tPaint);
index++;
}
try {
FileOutputStream fos = new FileOutputStream(
"/sdcard/timeStampedImage.jpg");
dest.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
方法
方法定期壓縮
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;
int quality = 70;
myBitmapClose = BitmapFactory.decodeFile(imgUriClose.getPath(),options);
if (myBitmapClose != null) {
File sdImageMainDirectory = new File(imgUriClose.getPath());
try {
FileOutputStream fileOutputStream = new FileOutputStream(sdImageMainDirectory);
BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
myBitmapClose.compress(CompressFormat.JPEG, quality, bos);
if (bos != null) {
bos.flush();
bos.close();
}
if (fileOutputStream != null) {
fileOutputStream.flush();
fileOutputStream.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
圖像樣本
也
看到一些有用的鏈接我也跟着
How to write text on an image in Java (Android)
Generate a image with custom text in Android
Drawing Text (TimeStamp) Over image captured from Standalone Camera
你真的需要將文本保存爲圖像的一部分嗎?我會將圖像的描述保存爲一個文件中圖像的文本和字節。然後每次你想要顯示你閱讀和文本可以顯示到任何屏幕 – PedroAGSantos
我可以做什麼兄弟所有的信息都準備好在數據庫中,但我的老闆想要它,所以我能做什麼 是的,我想要做什麼我已經寫 我已經顯示使用圖像在div的背景在網絡上發送通過移動 – Trikaldarshi