Android Open Source - wiki-contacts-android Image Service Impl






From Project

Back to project page wiki-contacts-android.

License

The source code is released under:

Apache License

If you think the Android project wiki-contacts-android 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.kahkong.wikicontacts.service;
/*from w ww . j  a  v a  2 s  . com*/
import java.io.ByteArrayOutputStream;

import java.io.IOException;
import java.io.InputStream;
import com.kahkong.wikicontacts.callback.OnCompleteListener;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;

/**
 * 
 * @author Poh Kah Kong
 *
 */
public class ImageServiceImpl implements ImageService {
  private static ImageService instance;
  
  private WebService webService = WebServiceImpl.getInstance();
  private ResourceService resourceService = ResourceServiceImpl.getInstance();
  
  private ImageServiceImpl() {
  }

  public synchronized static ImageService getInstance() {
    if (instance==null) {
      instance = new ImageServiceImpl();
    }
    return instance;
  }
  
  public void getImage(boolean isSpam, String url, final OnCompleteListener onCompleteListener) {
    if (isSpam) { // is spam
      onCompleteListener.onComplete(new Object[] {resourceService.getSpamImage()});
    } else { // not spam
      if (url!=null) { // has image        
        webService.getImageApp(url, new OnCompleteListener() {
          @Override
          public void onComplete(Object[] objects) {
            onCompleteListener.onComplete(new Object[] {decodeImage((InputStream) objects[0])});
          }
        });
      } else { // no image
        onCompleteListener.onComplete(new Object[] {resourceService.getNewImage()});
      }
    }
  }
  
  public Bitmap processImage(InputStream inputStream, int size) {
    Bitmap image = decodeImage(inputStream);
    image = resizeImage(image, size);
    image = cropCenterImage(image);
    return image;
  }  
  
  private Bitmap decodeImage(InputStream inputStream) {
    if (inputStream==null) {
      return null;
    }    
    Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
    try {
      inputStream.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return bitmap;
  }
  
  private Bitmap cropCenterImage(Bitmap image) {
    int width = image.getWidth();
    int height = image.getHeight();
    int size, x, y;
    if (width>height) { // landscape
      size = height;
      x = (width-height)/2;
      y = 0;
    } else { // portrait
      size = width;
      x = 0;
      y = (height-width)/2;
    }    
    Bitmap image2 = Bitmap.createBitmap(image, x, y, size, size);
    image.recycle();
    return image2;
  }
  
  private Bitmap resizeImage(Bitmap image, int size){
    int width = image.getWidth();
    int height = image.getHeight();
    int width2, height2;
    if (width>height) { // landscape
      width2 = (int) (((double) width)/height*size);
      height2 = size;
    } else { // portrait
      width2 = size;
      height2 = (int) (((double) height)/width*size);      
    }
    Bitmap image2 = Bitmap.createScaledBitmap(image, width2, height2, false); 
    image.recycle();
      return image2;
  }
  
  public Bitmap rotateImage(Bitmap image) {
    Matrix matrix = new Matrix();
    matrix.setRotate(90);
    Bitmap image2 = Bitmap.createBitmap(image, 0, 0, image.getWidth(), image.getHeight(), matrix, false);
    image.recycle();
    return image2;
  }
  
  public byte[] bitmapToBytes(Bitmap image) {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
    image.compress(CompressFormat.PNG, 100, outputStream); 
    return outputStream.toByteArray();
  }
}




Java Source Code List

com.kahkong.wikicontacts.callback.OnChangeListener.java
com.kahkong.wikicontacts.callback.OnClickListener.java
com.kahkong.wikicontacts.callback.OnCompleteListener.java
com.kahkong.wikicontacts.callback.OnEventListener.java
com.kahkong.wikicontacts.callback.OnTimeOutListener.java
com.kahkong.wikicontacts.callback.Validator.java
com.kahkong.wikicontacts.controller.AddEditContactActivity.java
com.kahkong.wikicontacts.controller.CallDetectService.java
com.kahkong.wikicontacts.controller.EditContactActivity.java
com.kahkong.wikicontacts.controller.SearchActivity.java
com.kahkong.wikicontacts.controller.TestActivity.java
com.kahkong.wikicontacts.controller.UpdateEditContactActivity.java
com.kahkong.wikicontacts.form.EditTextForm.java
com.kahkong.wikicontacts.form.ImageUploadForm.java
com.kahkong.wikicontacts.form.MultiEditTextForm.java
com.kahkong.wikicontacts.form.OptionsForm.java
com.kahkong.wikicontacts.form.RadioGroupForm.java
com.kahkong.wikicontacts.form.SpinnerForm.java
com.kahkong.wikicontacts.form.TagsForm.java
com.kahkong.wikicontacts.link.EmailLink.java
com.kahkong.wikicontacts.link.Link.java
com.kahkong.wikicontacts.link.NumberLink.java
com.kahkong.wikicontacts.link.TagLink.java
com.kahkong.wikicontacts.link.UrlLink.java
com.kahkong.wikicontacts.modal.ContactAndImage.java
com.kahkong.wikicontacts.modal.Contact.java
com.kahkong.wikicontacts.modal.CountryCode.java
com.kahkong.wikicontacts.modal.CountryCodesWithSelect.java
com.kahkong.wikicontacts.service.ContactServiceImpl.java
com.kahkong.wikicontacts.service.ContactService.java
com.kahkong.wikicontacts.service.CountryCodeServiceImpl.java
com.kahkong.wikicontacts.service.CountryCodeService.java
com.kahkong.wikicontacts.service.ImageServiceImpl.java
com.kahkong.wikicontacts.service.ImageService.java
com.kahkong.wikicontacts.service.IntentServiceImpl.java
com.kahkong.wikicontacts.service.IntentService.java
com.kahkong.wikicontacts.service.NotificationServiceImpl.java
com.kahkong.wikicontacts.service.NotificationService.java
com.kahkong.wikicontacts.service.PhoneBookServiceImpl.java
com.kahkong.wikicontacts.service.PhoneBookService.java
com.kahkong.wikicontacts.service.PreferencesServiceImpl.java
com.kahkong.wikicontacts.service.PreferencesService.java
com.kahkong.wikicontacts.service.ResourceServiceImpl.java
com.kahkong.wikicontacts.service.ResourceService.java
com.kahkong.wikicontacts.service.ValidationServiceImpl.java
com.kahkong.wikicontacts.service.ValidationService.java
com.kahkong.wikicontacts.service.WebServiceImpl.java
com.kahkong.wikicontacts.service.WebService.java
com.kahkong.wikicontacts.subcontroller.CallStateListener.java
com.kahkong.wikicontacts.subcontroller.FlowLayout.java
com.kahkong.wikicontacts.subcontroller.IncomingContactLayout.java
com.kahkong.wikicontacts.subcontroller.InfoDialog.java
com.kahkong.wikicontacts.subcontroller.LoadingDialog.java
com.kahkong.wikicontacts.subcontroller.ResultAdaptor.java
com.kahkong.wikicontacts.subcontroller.ViewContactDialog.java
com.kahkong.wikicontacts.subcontroller.ViewFormatter.java