Android Open Source - Operation-Valkyrie Decode Bitmaps






From Project

Back to project page Operation-Valkyrie.

License

The source code is released under:

Terms and conditions Preamble: This Agreement, signed on Jun 10, 2012 [hereinafter: Effective Date] governs the relationship between the Enduser, a private person, (hereinafter: Licensee) and Paul N...

If you think the Android project Operation-Valkyrie 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 valkyrie.file;
//from w ww . ja  v  a 2  s  .c om
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Vector;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import android.util.Log;

/**
 * 
 * COPYRIGHT: Paul Neuhold, Laurenz Theuerkauf, Alexander Ritz, Jakob
 * Schweighofer, Milo Tischler ? Milo Tischler, Jakob Schweighofer, Alexander
 * Ritz, Paul Neuhold, Laurenz Theuerkauf
 * 
 */

/**
 * 
 * This class handles all the file paths and thumb paths so that a correct
 * viewing in the gridview and then viewing the correct item in FUllscreen mode
 * is possible. Also responsible for creating new thumbs in case of new pictures
 * in the gallery.
 * 
 */
public class DecodeBitmaps {

  public static boolean done = false;
  private String TAG = "DecodeBitmaps";
  private File files = new File(Environment.getExternalStorageDirectory()
      + "/Valkyrie/Gallery");
  private File thumbFiles = new File(
      Environment.getExternalStorageDirectory() + "/Valkyrie/Thumbnls");
  private File fileList[];
  private File thumbList[];
  public static Vector<Bitmap> thumbs = new Vector<Bitmap>();
  public static Vector<String> fullImgPosition = new Vector<String>();
  public static Vector<File> fileVector = new Vector<File>();
  public static Vector<String> fullImgNames = new Vector<String>();
  public static Vector<String> thumbPosition = new Vector<String>();
  private int opt = 4;

  /**
   * called if new pictures are taken or some are deleted
   * 
   * @param int error out of memory for displaying the thumbs in the gridview
   */
  public DecodeBitmaps(int error) {
    // in case of outofmemory for creating thumbs
    if (error == 1) {
      this.opt = 6;
      Log.d(TAG, "new opt ? : " + this.opt);
      thumbs.clear();
      thumbPosition.clear();
      fullImgNames.clear();
      fullImgPosition.clear();
      decodeBitmap();
    } else {
      // if thumbs are already saved skip this class
      if (done == true) {
        // TODO: its too static ;)
        Log.d(TAG, "all work here was done hours ago ;)");
      } else {
        thumbs.clear();
        thumbPosition.clear();
        fullImgNames.clear();
        fullImgPosition.clear();
        decodeBitmap();
      }
    }

  }

  /**
   * this function is called everytime we have a new picture in the
   * galleryfolder then it checks if all the other thumbs are still exists, if
   * not new ones will be created.
   */
  private void decodeBitmap() {

    fileList = files.listFiles();
    thumbList = thumbFiles.listFiles();
    BitmapFactory.Options thumbOpt = new BitmapFactory.Options();
    thumbOpt.inSampleSize = opt;

    if (fileList != null && thumbList != null) {
      // save positions and names for all files
      // to display and check all thumbs and full images
      for (int i = 0; i < fileList.length; i++) {
        if (fileList[i] != null) {
          fullImgPosition.add(fileList[i].getAbsolutePath());
          fullImgNames.add(fileList[i].getName());
          Log.d(TAG, "file length: " + fileList.length
              + "but i still : " + i);
        } else {
          i++;
        }

      }

      int thumbCounter = 0;
      for (int i = 0; i < fileList.length; i++) {
        if (fileList[i] != null) {
          boolean match = false;
          // check if a thumb of a given file already exists
          for (File f : thumbList) {
            // Log.d(TAG,
            // "Checking if thumb already exists for all thumbs " +
            // i + ": " + f.getName());
            if (f.getName().contentEquals(fileList[i].getName())) {
              match = true;
              Log.d(TAG, "thumb name here with : " + f.getName());
            }

          }
          if (match) {
            thumbPosition.add(thumbList[thumbCounter]
                .getAbsolutePath());

            thumbCounter++;
            Log.d(TAG, "thumb already exists : " + i);
            // if a new picture is taken we didnt have a thumb so
            // match
            // == false
            // so we need a new thumb
          } else {
            Log.d(TAG,
                "saving thumb with name: "
                    + fileList[i].getName());
            Bitmap newThumb;
            newThumb = BitmapFactory.decodeFile(
                fileList[i].getAbsolutePath(), thumbOpt);
            saveAThumb(newThumb, fileList[i].getName(), i);

          }
        } else {
          i++;
        }
        done = true;
      }
    } else {

    }
    Log.d(TAG, "done");
  }

  /**
   * A compressed png is produced in a thumbfolder for a quicker performance
   * in the gridview. Only if the sdcard is not mounted.
   * 
   * @param Bitmap
   *            bitmap The bitmap to save in form of a thumb
   * @param String
   *            imgName The given Name for the thumb
   */
  public void saveAThumb(Bitmap bitmap, String imgName, int vecPos) {

    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {

      ByteArrayOutputStream bytes = new ByteArrayOutputStream();
      bitmap.compress(Bitmap.CompressFormat.PNG, 100, bytes);
      File f = new File(Environment.getExternalStorageDirectory()
          + "/Valkyrie/Thumbnls/" + imgName);
      try {
        f.createNewFile();
        FileOutputStream fo = new FileOutputStream(f);
        fo.write(bytes.toByteArray());
        Log.d(TAG, "saved a Thumb");

      } catch (IOException e) {
        Log.d(TAG, "io crash ? ");
        e.printStackTrace();
      }
      
      thumbList = thumbFiles.listFiles();
      thumbPosition.add(thumbList[vecPos].getAbsolutePath());
      
      bitmap.recycle();

    } else {
      Log.d(TAG, "couldnt save the thumb");
      bitmap.recycle();
    }
  }

  /**
   * Recycles all the bitmaps
   */
  public void recycleBitmaps() {
    int i = 0;
    for (Bitmap b : DecodeBitmaps.thumbs) {
      i++;
      b.recycle();
      Log.d(TAG, i + " Bitmaps recycled");
    }
  }

}




Java Source Code List

org.opencv.android.Utils.java
org.opencv.calib3d.Calib3d.java
org.opencv.calib3d.StereoBM.java
org.opencv.calib3d.StereoSGBM.java
org.opencv.core.Algorithm.java
org.opencv.core.Core.java
org.opencv.core.CvException.java
org.opencv.core.CvType.java
org.opencv.core.MatOfByte.java
org.opencv.core.MatOfDMatch.java
org.opencv.core.MatOfDouble.java
org.opencv.core.MatOfFloat4.java
org.opencv.core.MatOfFloat6.java
org.opencv.core.MatOfFloat.java
org.opencv.core.MatOfInt4.java
org.opencv.core.MatOfInt.java
org.opencv.core.MatOfKeyPoint.java
org.opencv.core.MatOfPoint2f.java
org.opencv.core.MatOfPoint3.java
org.opencv.core.MatOfPoint3f.java
org.opencv.core.MatOfPoint.java
org.opencv.core.MatOfRect.java
org.opencv.core.Mat.java
org.opencv.core.Point3.java
org.opencv.core.Point.java
org.opencv.core.Range.java
org.opencv.core.Rect.java
org.opencv.core.RotatedRect.java
org.opencv.core.Scalar.java
org.opencv.core.Size.java
org.opencv.core.TermCriteria.java
org.opencv.features2d.DMatch.java
org.opencv.features2d.DescriptorExtractor.java
org.opencv.features2d.DescriptorMatcher.java
org.opencv.features2d.FeatureDetector.java
org.opencv.features2d.Features2d.java
org.opencv.features2d.GenericDescriptorMatcher.java
org.opencv.features2d.KeyPoint.java
org.opencv.highgui.Highgui.java
org.opencv.highgui.VideoCapture.java
org.opencv.imgproc.Imgproc.java
org.opencv.imgproc.Moments.java
org.opencv.imgproc.Subdiv2D.java
org.opencv.ml.CvANN_MLP_TrainParams.java
org.opencv.ml.CvANN_MLP.java
org.opencv.ml.CvBoostParams.java
org.opencv.ml.CvBoost.java
org.opencv.ml.CvDTreeParams.java
org.opencv.ml.CvDTree.java
org.opencv.ml.CvERTrees.java
org.opencv.ml.CvGBTreesParams.java
org.opencv.ml.CvGBTrees.java
org.opencv.ml.CvKNearest.java
org.opencv.ml.CvNormalBayesClassifier.java
org.opencv.ml.CvParamGrid.java
org.opencv.ml.CvRTParams.java
org.opencv.ml.CvRTrees.java
org.opencv.ml.CvSVMParams.java
org.opencv.ml.CvSVM.java
org.opencv.ml.CvStatModel.java
org.opencv.ml.EM.java
org.opencv.ml.Ml.java
org.opencv.objdetect.CascadeClassifier.java
org.opencv.objdetect.HOGDescriptor.java
org.opencv.objdetect.Objdetect.java
org.opencv.photo.Photo.java
org.opencv.utils.Converters.java
org.opencv.video.BackgroundSubtractorMOG.java
org.opencv.video.BackgroundSubtractor.java
org.opencv.video.KalmanFilter.java
org.opencv.video.Video.java
valkyrie.colorpicker.ColorPickerDialog.java
valkyrie.colorpicker.ColorPicker.java
valkyrie.file.DecodeBitmaps.java
valkyrie.file.FileManager.java
valkyrie.filter.FilterAssets.java
valkyrie.filter.FilterInternalStorage.java
valkyrie.filter.FilterManager.java
valkyrie.filter.FilterUIPosition.java
valkyrie.filter.IFilter.java
valkyrie.filter.ascii.Ascii.java
valkyrie.filter.ascii.Converter.java
valkyrie.filter.ascii.Font.java
valkyrie.filter.ascii.Options.java
valkyrie.filter.canny.Canny.java
valkyrie.filter.grayscale.Grayscale.java
valkyrie.filter.nofilter.NoFilter.java
valkyrie.ui.IUpdateableUI.java
valkyrie.ui.LayoutManager.java
valkyrie.ui.MainActivity.java
valkyrie.ui.UpdateableRelativeLayout.java
valkyrie.ui.gallery.AboutActivity.java
valkyrie.ui.gallery.GalleryActivity.java
valkyrie.ui.gallery.ImageAdapter.java
valkyrie.ui.gallery.ShowPicActivity.java
valkyrie.ui.preview.CameraPreviewViewCV.java
valkyrie.widget.MultiDirectionSlidingDrawer.java
valkyrie.widget.TouchImageView.java