2012-11-14 106 views
23

我想創建一個Android應用程序在那裏我可以從SD卡,或從相機拍攝照片。拍攝照片後,我來編輯它,就像圖片中添加文本,對照片進行裁切,.GIF類型的文件添加到圖片。拍照不是問題,但我無法理解如何編寫代碼來編輯圖片。我需要知道我是否必須爲此使用OpenGL。建議和有用的鏈接通緝。Android的圖像編輯器

+0

你是否能找到任何其他類型的開放源碼的例子嗎? –

回答

52

你的問題太模糊。我提供了一些指導。

  1. 使用Aviary SDK現在變成Creative SDK。它還支持iOS和WindowPhone7。百鳥提供了大部分的功能,如方向,作物和清晰度,紅眼,美白,淡斑和,貼紙,繪圖,文字,和模因(測試版),亮度,飽和度和對比度和自定義選項。 SS
  2. Fotor SDK
  3. Creative SDK由Adobe
  4. 直接處理位圖。

    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; 
    } 
    } 
    

    用法:過程靛藍顏色:TintThePicture(180, myBitmap); 過程綠顏色:TintThePicture(300, myBitmap);

  5. 使用android.media.effect在API14
  6. Effect Pro
  7. Android-Image-Edit
  8. android-image-editor
  9. smartcrop-android提供(該庫將全日空通過計算某些特徵來解析最佳作物位置和大小;邊緣,膚色,staturation和臉。)
+0

真正驚人的答案。謝謝 –

+0

我下載了android-image-edit,它不起作用。錯誤是:Android需要編譯器合規性級別5.0或6.0。取而代之的是「1.7」。請使用Android工具>修復項目屬性。 – MMakati

+1

android-> proerties->的Java compiler_.check使項目setti ....選擇1.6 @MMakati – MGDroid