2012-11-14 12 views
23

Voglio creare un'app per Android in cui posso scattare una foto dalla scheda SD o dalla fotocamera. Dopo aver scattato la foto, devo modificarla, come aggiungere del testo nell'immagine, ritagliare l'immagine, aggiungere il file di tipo .gif all'immagine. Scattare una foto non è un problema, ma non riesco a capire come scrivere codice per modificare l'immagine. Devo sapere se devo usare OpenGL per questo. Suggerimenti e link utili voluti.Android Image Editor

+0

Sei stato in grado di trovare altri tipi di esempi open source? –

risposta

52

La tua domanda è troppo vaga. Fornisco una guida.

  1. L'utilizzo di Aviary SDK diventa Creative SDK. Supporta anche iOS e WindowPhone7. La voliera fornisce la maggior parte delle funzioni come Orientamento, Ritaglia e Nitidezza, Effetto occhi rossi, Sbiancatura e imperfezioni, Adesivi, Disegno, Testo e meme (beta), Luminosità, Saturazione e Contrasto e Opzioni personalizzate. SS.
  2. Fotor SDK
  3. Creative SDK da Adobe
  4. trasformare direttamente bitmap.

    import android.graphics.Bitmap; 
    
    public class ProcessingImage { 
    private Bitmap defaultImg; 
    private int idBitmap; 
    
    public int getIdBitmap() { 
        return idBitmap; 
    } 
    
    public void setIdBitmap(int idBitmap) { 
        this.idBitmap = idBitmap; 
    } 
    
    public Bitmap getDefaultImg() { 
        return defaultImg; 
    } 
    
    public void setDefaultImg(Bitmap defaultImg) { 
        this.defaultImg = defaultImg; 
    } 
    
    public ProcessingImage() { 
    } 
    
    public Bitmap processingI(Bitmap myBitmap) { 
        return myBitmap; 
    } 
    
    public Bitmap TintThePicture(int deg, Bitmap defaultBitmap) { 
    
        int w = defaultBitmap.getWidth(); 
        int h = defaultBitmap.getHeight(); 
    
        int[] pix = new int[w * h]; 
        defaultBitmap.getPixels(pix, 0, w, 0, 0, w, h); 
    
        double angle = (3.14159d * (double) deg)/180.0d; 
        int S = (int) (256.0d * Math.sin(angle)); 
        int C = (int) (256.0d * Math.cos(angle)); 
    
        int r, g, b, index; 
        int RY, BY, RYY, GYY, BYY, R, G, B, Y; 
    
        for (int y = 0; y < h; y++) { 
         for (int x = 0; x < w; x++) { 
          index = y * w + x; 
          r = (pix[index] >> 16) & 0xff; 
          g = (pix[index] >> 8) & 0xff; 
          b = pix[index] & 0xff; 
          RY = (70 * r - 59 * g - 11 * b)/100; 
          BY = (-30 * r - 59 * g + 89 * b)/100; 
          Y = (30 * r + 59 * g + 11 * b)/100; 
          RYY = (S * BY + C * RY)/256; 
          BYY = (C * BY - S * RY)/256; 
          GYY = (-51 * RYY - 19 * BYY)/100; 
          R = Y + RYY; 
          R = (R < 0) ? 0 : ((R > 255) ? 255 : R); 
          G = Y + GYY; 
          G = (G < 0) ? 0 : ((G > 255) ? 255 : G); 
          B = Y + BYY; 
          B = (B < 0) ? 0 : ((B > 255) ? 255 : B); 
          pix[index] = 0xff000000 | (R << 16) | (G << 8) | B; 
         } 
        } 
    
        Bitmap bm = Bitmap.createBitmap(w, h, defaultBitmap.getConfig()); 
        bm.setPixels(pix, 0, w, 0, 0, w, h); 
    
        pix = null; 
        return bm; 
    } 
    } 
    

    Uso: Processo di colore indaco: TintThePicture(180, myBitmap); processo di colore verde: TintThePicture(300, myBitmap);

  5. Usa android.media.effect è fornita in API14
  6. Effect Pro
  7. Android-Image-Edit
  8. android-image-editor
  9. smartcrop-android (Questa libreria sarà ana ridurre la posizione e le dimensioni del raccolto calcolando alcune caratteristiche; bordo, tono della pelle, temperatura e viso.)
+0

risposta davvero sorprendente. grazie –

+0

Ho scaricato Android-image-edit e non funziona. L'errore è: Android richiede il livello di conformità del compilatore 5.0 o 6.0. Trovato '1.7' invece. Utilizzare gli strumenti Android> Correggi le proprietà del progetto. – MMakati

+1

android-> proerties-> java compiler_.check abilita i progetti setti .... seleziona 1.6 @MMakati – MGDroid