将叠加图像保存到 SD 卡
Posted
技术标签:
【中文标题】将叠加图像保存到 SD 卡【英文标题】:Save over layed image to sdcard 【发布时间】:2012-05-02 18:56:21 【问题描述】:我想保存已设置背景并在其顶部放置另一个图像的框架布局。 当我使用 onclick 按钮时,它会给我“强制关闭错误”。
我正在使用以下代码:
FrameLayout mainLayout = (FrameLayout) findViewById(R.id.imageView);
File root = Environment.getExternalStorageDirectory();
File file = new File(root,"androidlife.jpg");
Bitmap b = Bitmap.createBitmap(mainLayout.getWidth(), mainLayout.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
mainLayout.draw(c);
FileOutputStream fos = null;
try
fos = new FileOutputStream(file);
if (fos != null)
b.compress(Bitmap.CompressFormat.JPEG, 90, fos);
fos.close();
catch (Exception e)
e.printStackTrace();
这是错误日志:
05-03 00:39:37.281: W/dalvikvm(445): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
05-03 00:39:37.301: E/AndroidRuntime(445): FATAL EXCEPTION: main
05-03 00:39:37.301: E/AndroidRuntime(445): java.lang.ClassCastException: android.widget.ImageView
05-03 00:39:37.301: E/AndroidRuntime(445): at org.example.touch.Touch$1.onClick(Touch.java:60)
05-03 00:39:37.301: E/AndroidRuntime(445): at android.view.View.performClick(View.java:2408)
05-03 00:39:37.301: E/AndroidRuntime(445): at android.view.View$PerformClick.run(View.java:8816)
05-03 00:39:37.301: E/AndroidRuntime(445): at android.os.Handler.handleCallback(Handler.java:587)
05-03 00:39:37.301: E/AndroidRuntime(445): at android.os.Handler.dispatchMessage(Handler.java:92)
05-03 00:39:37.301: E/AndroidRuntime(445): at android.os.Looper.loop(Looper.java:123)
05-03 00:39:37.301: E/AndroidRuntime(445): at android.app.ActivityThread.main(ActivityThread.java:4627)
05-03 00:39:37.301: E/AndroidRuntime(445): at java.lang.reflect.Method.invokeNative(Native Method)
05-03 00:39:37.301: E/AndroidRuntime(445): at java.lang.reflect.Method.invoke(Method.java:521)
05-03 00:39:37.301: E/AndroidRuntime(445): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-03 00:39:37.301: E/AndroidRuntime(445): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-03 00:39:37.301: E/AndroidRuntime(445): at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
【参考方案1】:问题是你正在这样做:
FrameLayout mainLayout = (FrameLayout) findViewById(R.id.imageView);
R.id.imageView 很可能是对ImageView
的引用。你最好这样做:
ImageView mainLayout = (ImageView) findViewById(R.id.imageView);
【讨论】:
我自己解决了这个问题......这是错误的参考......我更改为 FrameLayout mainLayout = (FrameLayout) findViewById(R.id.frame);因为我为我的 xml 文件使用 FrameLayout..所以它不能更改为 ImageView ..无论如何感谢所有以上是关于将叠加图像保存到 SD 卡的主要内容,如果未能解决你的问题,请参考以下文章