8

私は小さなAndroidアプリに取り組んでおり、画像に効果を加えたいと思っています。つまり、スケッチ、モノクロ、セピア、木炭、油絵の具、ネゲート、フリップ、フロップ、エンボスなどの効果を画像に加え、色相、彩度、明るさ、コントラストを変更します。 、画像の鮮明さ。そのようなツール用のAndroidライブラリはありますか?助けてくれて本当に感謝しています。

4

4 に答える 4

4

このライブラリを試してください

ジジル

于 2012-02-17T08:08:18.643 に答える
1

次のコードを使用して、ビットマップにコントラストを追加します。値の範囲は 1 ~ 100 です。

public static Bitmap AdjustContrast(Bitmap original, float Value){
        Value                                       =   (100.0f + Value) / 100.0f;
        Value *= Value;
        Bitmap newBitmap                            =   Bitmap.createBitmap(original.getWidth(), original.getHeight(),original.getConfig());
        int[] argb                                  =   new int[original.getWidth() * original.getHeight()];
        original.getPixels(argb, 0, original.getWidth(), 0, 0, original.getWidth(), original.getHeight());
        for (int i = argb.length - 1; i >= 0; --i) {
        int alpha                                   =   argb[i] >> 24;
        int red                                     =   (argb[i] >> 16) & 0xFF;
        int green                                   =   (argb[i] >> 8) & 0xFF;
        int blue                                    =   argb[i] & 0xFF;         
        float Red                                   =   red / 255.0f;
        float Green                                 =   green / 255.0f;
        float Blue                                  =   blue / 255.0f;
        Red                                         =   (((Red - 0.5f) * Value) + 0.5f) * 255.0f;
        Green                                       =   (((Green - 0.5f) * Value) + 0.5f) * 255.0f;
        Blue                                        =   (((Blue - 0.5f) * Value) + 0.5f) * 255.0f;
        int iR                                      =   (int)Red;
        iR                                          =   iR > 255 ? 255 : iR;
        iR                                          =   iR < 0 ? 0 : iR;
        int iG                                      =   (int)Green;
        iG                                          =   iG > 255 ? 255 : iG;
        iG                                          =   iG < 0 ? 0 : iG;
        int iB                                      =   (int)Blue;
        iB                                          =   iB > 255 ? 255 : iB;
        iB                                          =   iB < 0 ? 0 : iB;                   
        int composite                               =   (alpha << 24) | (iR << 16) | (iG << 8) | iB;
        argb[i]                                     =   composite;
        }
        newBitmap.setPixels(argb, 0, original.getWidth(), 0, 0, original.getWidth(), original.getHeight());
        Store.lastBitmap                            =   newBitmap;
        return newBitmap;
    }

これを明るさの効果に使用します。値は 1 から 100 の間である必要があります

public static Bitmap makeBrightnessBitmap(Bitmap original, int brightness){
        Bitmap newBitmap                            =   Bitmap.createBitmap(original.getWidth(), original.getHeight(),original.getConfig());
        int[] argb                                  =   new int[original.getWidth() * original.getHeight()];
        original.getPixels(argb, 0, original.getWidth(), 0, 0, original.getWidth(), original.getHeight());
        for (int i = argb.length - 1; i >= 0; --i) {
            int alpha                               =   argb[i] >> 24;
            int red                                 =   (argb[i] >> 16) & 0xFF;
            int green                               =   (argb[i] >> 8) & 0xFF;
            int blue                                =   argb[i] & 0xFF;                      
            int red2                                =   red + brightness;
            if (red2>0xFF) red2                     =   0xFF;
            if (red2<0) red2                        =   0;
            int green2                              =   green + brightness;
            if (green2>0xFF) green2                 =   0xFF;
            if (green2<0) green2                    =   0;
            int blue2                               =   blue + brightness;
            if (blue2>0xFF) blue2                   =   0xFF;
            if (blue2<0) blue2                      =   0;                 
            int composite                           =   (alpha << 24) | (red2 << 16) | (green2 << 8) | blue2;
            argb[i]                                 =   composite;
        }
        newBitmap.setPixels(argb, 0, original.getWidth(), 0, 0, original.getWidth(), original.getHeight());
        Store.lastBitmap                            =   newBitmap;
        return newBitmap;
    }
于 2012-07-27T11:18:21.577 に答える
0

基本的な画像効果は、標準の Android ツールで実現できます。android.graphics パッケージを調べます (ネイティブの画像形式とビットマップで動作します)。

于 2012-02-17T08:24:43.707 に答える
0

Aviary SDK を使用します。IOS Android と Windows Phone をサポートしています。公式リンクは次のとおりです: http://www.aviary.com/android

完全なコードは次のリンクにあります: https://github.com/AviaryInc/Mobile-Feather-SDK-for-Android

アプリケーションの幸運を祈ります

于 2012-12-06T05:12:14.133 に答える