diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java index 1cf3bf3..f538154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java @@ -28,7 +28,13 @@ public void onReadyRetrofitRequest(File file) { view.showProgress(); //改为上传带水印的图片 - Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); + BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); + /** + * inSampleSize == 2 returns + * an image that is 1/2 the width/height of the original, and 1/4 the number of pixels + * */ + bitmapOptions.inSampleSize = 2;//防止bitmap.copy的时候出现OOM,但是这么处理过之后图片像素会变低 + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), bitmapOptions); ImageHelper.drawTextToRightBottom(bitmap, StringHelper.getUserAccount(), TimeOrDateUtil.timestampToDate(System.currentTimeMillis()), TimeOrDateUtil.timestampToTime(System.currentTimeMillis()), diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java index 1cf3bf3..f538154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/UploadImagePresenterImpl.java @@ -28,7 +28,13 @@ public void onReadyRetrofitRequest(File file) { view.showProgress(); //改为上传带水印的图片 - Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); + BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); + /** + * inSampleSize == 2 returns + * an image that is 1/2 the width/height of the original, and 1/4 the number of pixels + * */ + bitmapOptions.inSampleSize = 2;//防止bitmap.copy的时候出现OOM,但是这么处理过之后图片像素会变低 + Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), bitmapOptions); ImageHelper.drawTextToRightBottom(bitmap, StringHelper.getUserAccount(), TimeOrDateUtil.timestampToDate(System.currentTimeMillis()), TimeOrDateUtil.timestampToTime(System.currentTimeMillis()), diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 1ca7363..2fa4a84 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -55,9 +55,9 @@ if (bitmap.getWidth() <= 720) { textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { - textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 15)); } else { - textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 30)); } Rect nameBounds = new Rect(); textPaint.getTextBounds(name, 0, name.length(), nameBounds); @@ -84,13 +84,13 @@ paddingRight = QMUIDisplayHelper.dp2px(context, 3); paddingBottom = QMUIDisplayHelper.dp2px(context, 3); } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { - padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 - paddingRight = QMUIDisplayHelper.dp2px(context, 10); - paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + padding = QMUIDisplayHelper.dp2px(context, 8);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 8); + paddingBottom = QMUIDisplayHelper.dp2px(context, 8); } else { - padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - paddingRight = QMUIDisplayHelper.dp2px(context, 20); - paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + padding = QMUIDisplayHelper.dp2px(context, 15);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 15); + paddingBottom = QMUIDisplayHelper.dp2px(context, 15); } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, @@ -107,6 +107,9 @@ copyBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); fos.flush(); fos.close(); + if (!copyBitmap.isRecycled()) { + copyBitmap.recycle(); + } } catch (Exception e) { e.printStackTrace(); }