У меня пустое изображение, и на этом я положил некоторые наклейки, после чего я хочу сохранить изображения. Но когда я сохраняю изображение, я вижу, что его края искажены.Края растрового изображения были искажены при сохранении
EDIT: есть проблема. может быть компромиссом с краевым искажением с положением наклейки .. он отображает положение наклейки. когда я использую черно-белое изображение 4000 * 2250 в качестве фонового изображения, и когда я использую 2000 * 1500 в качестве фонового изображения, это не создает никаких проблем с положением, но chg resoulation изображения.
это ПИК перед сохранением внутри приложения:
это ПОС после сохранения в моей сд карты:
Вот мой растровый спасительной код:
public Bitmap saveCurrentBitmap() {
EditActivity act = (EditActivity) mContext;
Bitmap origRawImage = act.getRawBitmap();
// copy to mutable
Bitmap rawImage = origRawImage.copy(Bitmap.Config.ARGB_8888, true);
if (rawImage == null)
return null;
Canvas canvas = new Canvas(rawImage);
// get scale factor
RectF scaledImg = act.getImageView().getInnerBitmapSize();
float scale = rawImage.getWidth()/scaledImg.width();
List<DraggableBitmap> stampList = act.getImageView().getOverlayList();
if (stampList.size() > 0) {
Enumeration<DraggableBitmap> e = Collections.enumeration(stampList);
while (e.hasMoreElements()) {
DraggableBitmap dBmp = (DraggableBitmap) e.nextElement();
Matrix finalMtx = new Matrix();
// calculate margin and move back
Matrix marginMtx = dBmp.getMarginMatrix();
float[] moveArr = new float[9];
marginMtx.getValues(moveArr);
float x = -(moveArr[0]);
float y = -(moveArr[3]);
Matrix moveBackMtx = new Matrix();
moveBackMtx.postTranslate(x, y);
// current manipulate matrix (rotate, zoom, move..)
Matrix manipulateMtx = dBmp.getCurrentMatrix();
Matrix scaleMtx = new Matrix();
// scale to original size
scaleMtx.postScale(scale, scale, 0, 0);
manipulateMtx = (manipulateMtx == null) ? new Matrix() : manipulateMtx;
finalMtx.postConcat(manipulateMtx);
finalMtx.postConcat(moveBackMtx);
finalMtx.postConcat(scaleMtx);
canvas.drawBitmap(dBmp.mBitmap, finalMtx, null);
}
}
return rawImage;
}
и это код, называя savebitmap
private void saveImage() {
Bitmap bmpToSave = mActivityHelper.saveCurrentBitmap();
this.getBaseApplication().setRawBitmap(bmpToSave);
savedImagePath = SaveToStorageUtil.save(bmpToSave, this);
ImageScannerAdapter adapter = new ImageScannerAdapter(this);
adapter.scanImage(savedImagePath);
}
Извините, но я не вижу края, которые искажены. Я вижу только, что второе изображение меньше и менее детализировано. И в чем вопрос? – greenapps
'saveCurrentBitmap()' не сохраняет растровое изображение. Он возвращает только битмап. – greenapps
код saveimage загружен и есть искажение, если вы внимательно посмотрите @greenapps – Developer