- private Bitmap createScreenshot(int width, int height) {
-
-
-
- final int filter_scale = 2;
- Picture thumbnail = capturePicture();
- if (thumbnail == null) {
- return null;
- }
-
-
- width *= filter_scale;
- height *= filter_scale;
- Bitmap bm = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
- Canvas canvas = new Canvas(bm);
-
-
- int thumbnailWidth = thumbnail.getWidth();
- int thumbnailHeight = thumbnail.getHeight();
- float scaleFactor = 1.0f;
- if (thumbnailWidth > 0 && thumbnailHeight > 0) {
- scaleFactor = (float) width / (float)thumbnailWidth;
- } else {
- return null;
- }
-
- float scaleFactorY = (float) height / (float)thumbnailHeight;
- if (scaleFactorY > scaleFactor) {
-
-
- scaleFactor = scaleFactorY;
- float wx = (thumbnailWidth * scaleFactor) - width;
- canvas.translate((int) -(wx / 2), 0);
- }
-
- canvas.scale(scaleFactor, scaleFactor);
-
- thumbnail.draw(canvas);
- Bitmap ret = Bitmap.createScaledBitmap(bm, width / filter_scale,
- height / filter_scale, true);
- bm.recycle();
- return ret;
- }
- public void saveBitmap(Bitmap bm, String filename){
-
- if (null == bm || bm.getWidth() == 0 || bm.getHeight() == 0){
- return;
- }
- File temp = new File(filename);
- FileOutputStream fout = null;
- try{
- temp.createNewFile();
- fout = new FileOutputStream(temp);
- }catch (IOException e){
- e.printStackTrace();
- }
- bm.compress(Bitmap.CompressFormat.PNG, 100, fout);
- try {
- fout.flush();
- } catch (IOException e) {
- e.printStackTrace();
- }
- try {
- fout.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- if (!bm.isRecycled()){
- bm.recycle();
- }
- }
- Bitmap getViewBitmap(View v){
- Bitmap drawingCache = Bitmap.createBitmap(v.getWidth(),
- v.getHeight(), Bitmap.Config.RGB_565);
- Canvas cvs = new Canvas();
- cvs.setBitmap(drawingCache);
- v.draw(cvs);
- return drawingCache;
- }
posted @
2012-04-05 21:59
cascais
阅读(
688)
评论()
收藏
举报