从视图中保存照片拼贴 android
Save photo collage from view android
我有下一个观点:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="350dp"
android:layout_height="350dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="140dp"
android:layout_height="match_parent"
android:layout_marginRight="2.5dp"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="2.5dp"
android:layout_weight="1"
android:longClickable="true"
android:scaleType="matrix"
android:src="@drawable/a1" />
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="2.5dp"
android:layout_weight="1"
android:longClickable="true"
android:scaleType="matrix"
android:src="@drawable/a2" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_marginLeft="2.5dp"
android:longClickable="true"
android:scaleType="matrix"
android:src="@drawable/a4" />
</LinearLayout>
</LinearLayout>
看起来像:
在此视图中,用户可以编辑查看此图片(缩放、旋转)
我必须保存编辑过的照片拼贴。如何保存缩放和旋转照片的视图?是否可以将位图中的编辑视图保存到应用程序缓存中?
感谢您的帮助!
是的,您可以简单地截取编辑后的图像并创建一个可以保存在任何地方的位图
下面是获取位图的函数
public Bitmap getBitMap() {
try {
yourEditedPhotoCollageLayout.buildDrawingCache();
Bitmap bmp = Bitmap.createBitmap(yourEditedPhotoCollageLayout.getDrawingCache());
return bmp;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
这样你就可以保存那个位图
private void saveBitmap(Bitmap bitmap) {
try {
File storageDir = createImageFile();
String path = storageDir.toString();
OutputStream out = new FileOutputStream(path);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.close();
MyMediaConnectorClient client = new MyMediaConnectorClient(path);
MediaScannerConnection scanner = new MediaScannerConnection(
Context, client);
client.setScanner(scanner);
scanner.connect();
} catch (IOException e) {
Log.e("save image", "failed to save image", e);
}
}
我有下一个观点:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="350dp"
android:layout_height="350dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="140dp"
android:layout_height="match_parent"
android:layout_marginRight="2.5dp"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="2.5dp"
android:layout_weight="1"
android:longClickable="true"
android:scaleType="matrix"
android:src="@drawable/a1" />
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="2.5dp"
android:layout_weight="1"
android:longClickable="true"
android:scaleType="matrix"
android:src="@drawable/a2" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_marginLeft="2.5dp"
android:longClickable="true"
android:scaleType="matrix"
android:src="@drawable/a4" />
</LinearLayout>
</LinearLayout>
看起来像:
在此视图中,用户可以编辑查看此图片(缩放、旋转)
我必须保存编辑过的照片拼贴。如何保存缩放和旋转照片的视图?是否可以将位图中的编辑视图保存到应用程序缓存中?
感谢您的帮助!
是的,您可以简单地截取编辑后的图像并创建一个可以保存在任何地方的位图
下面是获取位图的函数
public Bitmap getBitMap() {
try {
yourEditedPhotoCollageLayout.buildDrawingCache();
Bitmap bmp = Bitmap.createBitmap(yourEditedPhotoCollageLayout.getDrawingCache());
return bmp;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
这样你就可以保存那个位图
private void saveBitmap(Bitmap bitmap) {
try {
File storageDir = createImageFile();
String path = storageDir.toString();
OutputStream out = new FileOutputStream(path);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.close();
MyMediaConnectorClient client = new MyMediaConnectorClient(path);
MediaScannerConnection scanner = new MediaScannerConnection(
Context, client);
client.setScanner(scanner);
scanner.connect();
} catch (IOException e) {
Log.e("save image", "failed to save image", e);
}
}