2012-11-14 70 views
23

Tôi muốn tạo một ứng dụng Android, nơi tôi có thể chụp ảnh từ thẻ SD hoặc từ máy ảnh. Sau khi chụp ảnh, tôi phải chỉnh sửa nó, như thêm chữ vào ảnh, cắt ảnh, thêm tệp .gif vào ảnh. Chụp ảnh không phải là vấn đề, nhưng tôi không thể hiểu cách viết mã để chỉnh sửa ảnh. Tôi cần phải biết liệu tôi có phải sử dụng OpenGL cho việc này hay không. Đề xuất và liên kết hữu ích mong muốn.Trình chỉnh sửa hình ảnh Android

+0

Bạn có thể tìm thấy bất kỳ loại ví dụ nguồn mở nào khác không? –

Trả lời

52

Câu hỏi của bạn quá mơ hồ. Tôi cung cấp một số hướng dẫn.

  1. Sử dụng Aviary SDK giờ trở thành Creative SDK. Nó cũng hỗ trợ iOS và WindowPhone7. Aviary cung cấp hầu hết các chức năng như Định hướng, Cắt, và Độ sắc nét, Mắt đỏ, Làm trắng, và Nhược điểm, Nhãn, Bản vẽ, Văn bản, và Meme (beta), Độ sáng, Độ bão hòa, và Độ tương phản và Tùy chọn tùy chỉnh. SS.
  2. Fotor SDK
  3. Creative SDK bởi Adobe
  4. Trực tiếp xử lý 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; 
    } 
    } 
    

    Cách sử dụng: Quy trình Indigo màu: TintThePicture(180, myBitmap); Process xanh màu: TintThePicture(300, myBitmap);

  5. Sử dụng android.media.effect được cung cấp trong API14
  6. Effect Pro
  7. Android-Image-Edit
  8. android-image-editor
  9. smartcrop-android (Thư viện này sẽ ana tách vị trí và kích thước cây trồng tốt nhất bằng cách tính toán một số tính năng; cạnh, tông màu da, trạng thái và khuôn mặt.)
+0

câu trả lời thực sự tuyệt vời. cảm ơn –

+0

Tôi đã tải xuống android-image-edit và nó không hoạt động. Lỗi là: Android yêu cầu mức tuân thủ trình biên dịch 5.0 hoặc 6.0. Tìm thấy '1.7' thay thế. Vui lòng sử dụng Công cụ Android> Sửa thuộc tính dự án. – MMakati

+1

android-> proerties-> java compiler_.check cho phép các dự án setti .... chọn 1.6 @MMakati – MGDroid

Các vấn đề liên quan