Android Open Source - android-open-street-map Bitmap Scaler






From Project

Back to project page android-open-street-map.

License

The source code is released under:

Apache License

If you think the Android project android-open-street-map listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.android.lib.map.osm;
/*  w  w  w. ja  va  2 s .  c  om*/
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;

public class BitmapScaler {
  
//  public static Bitmap scaleTo(Bitmap bitmap, int offsetX, int offsetY,float scaleFactor, int newWidth, int newHeight) {
//        
//    if (bitmap == null)
//      return bitmap;
//    
//    int width = bitmap.getWidth();
//        int height = bitmap.getHeight();
//
//        try {
//          
//      Bitmap resizedBitmap = Bitmap.createBitmap(newWidth, newHeight, Bitmap.Config.RGB_565);
//      Rect src = new Rect(0, 0, width, height);
//      Rect dest = new Rect(0, 0, newWidth, newHeight);
//      Canvas c = new Canvas(resizedBitmap);
//      c.drawBitmap(bitmap, src, dest, null);
//          
//          return resizedBitmap;
//        
//        } catch (OutOfMemoryError e) {
//          e.printStackTrace();
//        } catch (Exception e) {
//          e.printStackTrace();
//        }
//        
//    return null;
//  }
  
  public static Bitmap scaleTo(Bitmap bitmap, float scaleFactor, int xIncrement, int yIncrement) {
    
    if (bitmap == null)
      return bitmap;
        
        try {
        
          int width = (int) ((bitmap.getWidth() / 2) / scaleFactor);
            int height = (int) ((bitmap.getHeight() / 2) / scaleFactor);
            
      Bitmap resizedBitmap = Bitmap.createBitmap(Tile.TILE_SIZE, Tile.TILE_SIZE, Bitmap.Config.RGB_565);
      int x = width * xIncrement;
      int y = height * yIncrement;
      Rect src = new Rect(x, y, x + width, y + height);
      Rect dest = new Rect(0, 0, Tile.TILE_SIZE, Tile.TILE_SIZE);
      Canvas c = new Canvas(resizedBitmap);
      c.drawBitmap(bitmap, src, dest, null);
          
          return resizedBitmap;
        
        } catch (OutOfMemoryError e) {
          e.printStackTrace();
        } catch (Exception e) {
          e.printStackTrace();
        }
        
    return null;
    
  }
  
  public static PipedOutputStream convertBitmapToStream(Bitmap src) 
    { 
  PipedOutputStream os=new PipedOutputStream();
    src.compress(android.graphics.Bitmap.CompressFormat.PNG, 100, os); 
    return os; 
    } 
  public static Bitmap scaleToCompress(Bitmap bitmap,float scaleFactor) {
    
      try{
      PipedInputStream pin = new PipedInputStream(convertBitmapToStream(bitmap));  
      return decodeFile(pin,scaleFactor);
      }catch(Exception e ){
        e.printStackTrace();
      }
      return bitmap;
  }
  private static Bitmap decodeFile(PipedInputStream is,float scaleFactor){
      try {
          //Decode image size
          BitmapFactory.Options o = new BitmapFactory.Options();
          o.inJustDecodeBounds = true;
          BitmapFactory.decodeStream(is,null,o);

       
          //Decode with inSampleSize
          BitmapFactory.Options o2 = new BitmapFactory.Options();
          o2.inSampleSize=(int)scaleFactor;
          return BitmapFactory.decodeStream(is, null, o2);
      } catch (Exception e) {
        e.printStackTrace();
      }
      return null;
  }
  
}




Java Source Code List

com.android.lib.map.osm.BitmapScaler.java
com.android.lib.map.osm.Configuration.java
com.android.lib.map.osm.GeoPoint.java
com.android.lib.map.osm.InDbTileLoader.java
com.android.lib.map.osm.InMemoryTilesCache.java
com.android.lib.map.osm.LRUMap.java
com.android.lib.map.osm.ManageTilesCached.java
com.android.lib.map.osm.OsmMapViewBase.java
com.android.lib.map.osm.OsmMapView.java
com.android.lib.map.osm.OsmOverlayListener.java
com.android.lib.map.osm.Projection.java
com.android.lib.map.osm.RemoteAsyncTileLoader.java
com.android.lib.map.osm.RemoteTileLoader.java
com.android.lib.map.osm.RequestTile.java
com.android.lib.map.osm.RequestsQueue.java
com.android.lib.map.osm.ResizedTilesCache.java
com.android.lib.map.osm.TileHandler.java
com.android.lib.map.osm.Tile.java
com.android.lib.map.osm.TilesDownloader.java
com.android.lib.map.osm.TilesProvider.java
com.android.lib.map.osm.controller.IMapInteractionListener.java
com.android.lib.map.osm.helpers.CustomDatabaseHelper.java
com.android.lib.map.osm.helpers.OsmDatabaseHelper.java
com.android.lib.map.osm.helpers.ScaleGestureHelper.java
com.android.lib.map.osm.helpers.ScaleGesturePreFroyoHelper.java
com.android.lib.map.osm.models.MapEntity.java
com.android.lib.map.osm.models.MapTileEntity.java
com.android.lib.map.osm.models.MapTile.java
com.android.lib.map.osm.models.OsmModel.java
com.android.lib.map.osm.overlay.MapMarker.java
com.android.lib.map.osm.overlay.MapPolygon.java
com.android.lib.map.osm.overlay.MapTrack.java
com.android.lib.map.osm.overlay.OsmLocationOverlay.java
com.android.lib.map.osm.overlay.OsmMarkerOverlay.java
com.android.lib.map.osm.overlay.OsmOverlay.java
com.android.lib.map.osm.overlay.OsmPolygonOverlay.java
com.android.lib.map.osm.overlay.OsmTrackOverlay.java
com.android.lib.map.osm.utils.CountDownTimer.java
com.android.lib.map.osm.utils.DateUtil.java
com.android.lib.map.osm.utils.PolygonUtils.java
com.android.lib.map.osm.utils.PolylineUtil.java