view存成bitmap

  1. public static String saveView2Bitmap(Context context,View view,String fileName) {
  2. Bitmap bitmap = null;
  3. if(context == null || view == null || TextUtils.isEmpty(fileName)){
  4. return null;
  5. }
  6. view.setDrawingCacheEnabled(true);
  7. // view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
  8. view.buildDrawingCache();
  9. bitmap = view.getDrawingCache();
  10. if(bitmap == null){
  11. Toast.makeText(context,context.getString(R.string.wallpaper_failed_to_crop),Toast.LENGTH_SHORT).show();
  12. return null;
  13. }
  14. String ret = null;
  15. OutputStream fos = null;
  16. try {
  17. Bitmap resizeBitmap = zoomBitmap(bitmap,0.5f,0.5f);
  18. bitmap.recycle();
  19. Uri uri = Uri.fromFile(new File(WallpaperSettingUtils.getTempSaveDir() + fileName));
  20. File file = new File(uri.getPath());
  21. if (!file.exists()) {
  22. try {
  23. file.createNewFile();
  24. } catch (IOException e) {
  25. Toast.makeText(context,context.getString(R.string.wallpaper_failed_to_crop),Toast.LENGTH_SHORT).show();
  26. return null;
  27. }
  28. }
  29. fos = context.getContentResolver().openOutputStream(uri);
  30. // 这里也可以是 Bitmap.CompressFormat.PNG, 可以保持透明背景
  31. resizeBitmap.compress(Bitmap.CompressFormat.JPEG, 80, fos);
  32. ret = WallpaperSettingUtils.getTempSaveDir() + fileName;
  33. } catch (Exception e) {
  34. Toast.makeText(context,context.getString(R.string.wallpaper_failed_to_crop),Toast.LENGTH_SHORT).show();
  35. }finally {
  36. Util.closeSilently(fos);
  37. view.setDrawingCacheEnabled(false);
  38. }
  39. return ret;
  40. }
  41. /**
  42. * 将图片按指定比例缩放
  43. */
  44. public static Bitmap zoomBitmap(Bitmap bitmap, float scaleWidth, float scaleHeight) {
  45. int width = bitmap.getWidth();
  46. int height = bitmap.getHeight();
  47. Matrix matrix = new Matrix();
  48. // float scaleWidth = ((float) w / width);
  49. // float scaleHeight = ((float) h / height);
  50. matrix.postScale(scaleWidth, scaleHeight);
  51. Bitmap newBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
  52. return newBitmap;
  53. }
  54. public static Bitmap convertViewToBitmap(View view){
  55. view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
  56. view.buildDrawingCache();
  57. Bitmap bitmap = view.getDrawingCache();
  58. return bitmap;
  59. }
  60. //---------------------
  61. public static String saveView2BitmapWithoutZoom(Context context,View view,String fileName) {
  62. Bitmap bitmap = null;
  63. if(context == null || view == null || TextUtils.isEmpty(fileName)){
  64. return null;
  65. }
  66. view.setDrawingCacheEnabled(true);
  67. view.buildDrawingCache();
  68. bitmap = view.getDrawingCache();
  69. if(bitmap == null){
  70. Toast.makeText(context,context.getString(R.string.wallpaper_failed_to_crop),Toast.LENGTH_SHORT).show();
  71. return null;
  72. }
  73. String ret = null;
  74. OutputStream fos = null;
  75. try {
  76. Uri uri = Uri.fromFile(new File(WallpaperSettingUtils.getTempSaveDir() + fileName));
  77. File file = new File(uri.getPath());
  78. if (!file.exists()) {
  79. try {
  80. file.createNewFile();
  81. } catch (IOException e) {
  82. Toast.makeText(context,context.getString(R.string.wallpaper_failed_to_crop),Toast.LENGTH_SHORT).show();
  83. return null;
  84. }
  85. }
  86. fos = context.getContentResolver().openOutputStream(uri);
  87. bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
  88. ret = WallpaperSettingUtils.getTempSaveDir() + fileName;
  89. } catch (Exception e) {
  90. Toast.makeText(context,context.getString(R.string.wallpaper_failed_to_crop),Toast.LENGTH_SHORT).show();
  91. }finally {
  92. Util.closeSilently(fos);
  93. view.destroyDrawingCache();
  94. view.setDrawingCacheEnabled(false);
  95. bitmap.recycle();
  96. }
  97. return ret;
  98. }

来自为知笔记(Wiz)

时间: 2024-10-14 14:04:52

view存成bitmap的相关文章

将View转换成Bitmap

/** * 将中间的View保转换成Bitmap * */ private Bitmap saveViewBitmap(View view) { // get current view bitmap view.setDrawingCacheEnabled(true); view.buildDrawingCache(true); Bitmap bitmap = view.getDrawingCache(true); Bitmap bmp = duplicateBitmap(bitmap); if

Android 将View转换成Bitmap

/** * 将View转换成Bitmap的方法 * @param view * @return */ public static Bitmap getBitmapFromView(View view) { view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); view.layout(0, 0, v

该View转换成Bitmap方法

方法一: /** * 该View绘制到Bitmap上 * @param view 须要绘制的View * @param width 该View的宽度 * @param height 该View的高度 * @return 返回Bitmap对象 * add by csj 13-11-6 */ public Bitmap getViewBitmap(View comBitmap, int width, int height) { Bitmap bitmap = null; if (comBitmap

Android获取View对应的Bitmap

我的应用里面有一个需求,将一个画面分享出去,这个画面底层是一个View,所以首先要把这个View转换成Bitmap,然后在分享这个bitmap即可.话不多说,直接上代码. 有个地方需要注意一下:就是//Draw background的代码不能省略,否则生成的图片背景就是黑色的了. == public static Bitmap getBitmapFromView(View v) { Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(

Android:将View的内容映射成Bitmap转图片导出

前段时间在网上看到这么个例子是将view映射到一个bitmap中,稍加改进可以用于一些截图工具或者截图软件(QQ截图之类),例子写的不够完善,不过很有些学习的意义内容大致如下: 在Android中自有获取view中的cache内容,然后将内容转换成bitmap,方法名是:getDrawingCache(),返回结果为Bitmap,但是刚开始使用的时候,得到的结果都是null,所以在一个论坛里查到了正确的使用方法.代码如下: contentLayout.setDrawingCacheEnabled

视频采集,存成avi

视频采集,存成aviunit Unit1; interface uses  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,   Dialogs, ExtCtrls, StdCtrls; type  TForm1 = class(TForm)    Panel1: TPanel;    OpenVideo: TButton;    CloseVideo: TButton;    GrabFrame: TButton;

Android中将布局文件转成bitmap

在实践中发现,有些需要打印的小票高度小于屏幕的高度,而有些小票内容过多高度高于屏幕高度. 小于屏幕高度的布局文件转成bitmap较为容易,高于屏幕高度的布局文件转成长图bitmap较为复杂. 一.小于屏幕高度的布局文件转成bitmap 1.需求 在交易过程中常常需要打印小票,利用布局文件组织小票格式,并将其转成bitmap之后打印出来较为方便. 2.布局文件转bitmap public class ReceiptViewActivity extends Activity{ private Vie

Android View转换成图片保存

package zhangphil.viewtoimage; import java.io.File; import java.io.FileOutputStream; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.view.View; import android.widget.Button; import android.widget.Tex

如何将Icon转成Bitmap

个最近工作中有个需求是将Icon转成带Alpha通道的Bitmap, 虽然网上有不少这方面的文章,但很多都是错的, 这里记录下,或许对后来人有用. 要实现这个功能,我们首先需要理解Icon的格式,我们可以看到Icon的结构如下: typedef struct _ICONINFO {    BOOL fIcon;    DWORD xHotspot;    DWORD yHotspot;    HBITMAP hbmMask;    HBITMAP hbmColor;} ICONINFO;type