web-dev-qa-db-fra.com

Android Éditeur d'images

Je veux créer une application Android où je peux prendre une photo à partir de la carte SD ou de la caméra. Après avoir pris la photo, je dois la modifier, comme ajouter du texte dans la photo, recadrer l'image, ajoutez un fichier de type .gif à l'image. Prendre une photo n'est pas le problème, mais je ne comprends pas comment écrire du code pour éditer l'image. J'ai besoin de savoir si je dois utiliser OpenGL pour cela. Suggestions et des liens utiles voulus.

26
Hasan

Votre question est trop vague. Je fournis un guide.

  1. En utilisant SDK pour volières devient maintenant Creative SDK . Il prend également en charge iOS et WindowPhone7. Les volières fournissent la plupart des fonctions telles que l'orientation, le recadrage et la netteté, les yeux rouges, le blanchiment et les imperfections, les autocollants, le dessin, le texte et le mème (bêta), la luminosité, la saturation et le contraste et les options personnalisées. SS.
  2. SDK Fotor
  3. Creative SDK par Adobe
  4. Traitez directement le 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;
    }
    }
    

    Utilisation: Process Indigo color: TintThePicture(180, myBitmap); Process Green color: TintThePicture(300, myBitmap);

  5. Utiliser Android.media.effect est fourni dans API14
  6. Effect Pro
  7. Android-Image-Edit
  8. éditeur d'image Android
  9. smartcrop-Android (Cette bibliothèque analysera la meilleure position et taille de recadrage en calculant certaines fonctionnalités; bord, teint, staturation et visage.)
55
Nam Trung