Я добавляю точку на растровое изображение Canvas. В ImageView включены жесты Масштаб, Поворот и Перемещение. После этого я сохраняю изображение во внешнем хранилище нажатием кнопки. Но растровое изображение обрезается (размер растрового изображения такой же, как у моего пользовательского imageView). Я сохраняю точку на холсте, используя imgView.getDrawingCache (). Я не хочу обрезать сохраненное растровое изображение.
Save Function -
private void saveFunction() {
iv.setDrawingCacheEnabled(true);
Bitmap bitmap = iv.getDrawingCache(true);
/* BitmapDrawable drawable = (BitmapDrawable) iv.getDrawable();
Bitmap newBitmap = drawable.getBitmap();*/
String path =
Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(path + File.separator + "name" + ".png");
Toast.makeText(getApplicationContext(), file.getAbsolutePath(),
Toast.LENGTH_LONG).show();
try {
if (!file.exists())
{
file.createNewFile();
}
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 10, ostream);
ostream.close();
System.out.println("Rushi : saveFunction : saved");
} catch (Exception e) {
e.printStackTrace();
}
}
Мой пользовательский класс ImageView
публичный класс
DrawImageView extends ImageView {
private Paint currentPaint;
public boolean drawRect = false;
public float x;
public float y;
public Bitmap newBitmap;
public Matrix matrix;
public DrawImageView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
currentPaint = new Paint();
currentPaint.setDither(true);
currentPaint.setColor(0xFF00CC00);
currentPaint.setStyle(Paint.Style.STROKE);
currentPaint.setStrokeJoin(Paint.Join.ROUND);
currentPaint.setStrokeCap(Paint.Cap.ROUND);
currentPaint.setStrokeWidth(60);
}
public void setNewBitmap(Bitmap bmp) {
newBitmap = bmp;
}
public Bitmap getNewBitmap() {
return newBitmap;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (drawRect) {
canvas.drawPoint(x, y, currentPaint);
/* Matrix matrix = this.getImageMatrix();
float[] pts = {0, 0};
matrix.mapPoints(pts);
System.out.println("Rushi : NewPoint : "+pts[0]+","+pts[1]);*/
// canvas.drawBitmap(newBitmap, getImageMatrix(), null);
}
}
}
Итак, нажимая кнопку, я рисую точку, а затем сохраняю изображение.