SD カードまたはカメラから写真を撮影できる Android アプリを作成したいと考えています。写真を撮った後、写真にテキストを追加したり、写真をトリミングしたり、.gif タイプのファイルを写真に追加したりして、編集する必要があります。写真を撮ることは問題ではありませんが、写真を編集するコードの書き方がわかりません。これに OpenGL を使用する必要があるかどうかを知る必要があります。提案と役立つリンクが必要です。
質問する
51991 次
2 に答える
59
あなたの質問は漠然としすぎています。私はいくつかのガイドを提供します。
UPDATE 2020: Android Asernal https://android-arsenal.com/tag/47にリストされているすべての画像処理ライブラリを閲覧できます
Aviary SDKの使用がCreative SDKになりました。また、iOS と WindowPhone7 にも対応しています。鳥小屋は、向き、クロップ、シャープネス、赤目、白化、シミ、ステッカー、描画、テキスト、ミーム (ベータ)、明るさ、彩度、コントラスト、カスタム オプションなど、ほとんどの機能を提供します。.- Fotor SDK
Adobe によるクリエイティブ SDK- ビットマップを直接処理します。
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);
API14で提供されているandroid.media.effectを利用する
smartcrop-android (このライブラリは、いくつかの特徴 (エッジ、肌の色合い、身長、顔) を計算することにより、最適なトリミング位置とサイズを分析します。)
于 2012-11-14T07:44:00.673 に答える