Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用puelocesar/android lib magick_Android_Imagemagick - Fatal编程技术网

使用puelocesar/android lib magick

使用puelocesar/android lib magick,android,imagemagick,Android,Imagemagick,我是Android的初学者。我想要一个使用此库的示例应用:。我以前试过使用它,我做了很多改变使它工作,但结果并不令人满意 我只想知道某个特定的东西需要调用哪个类 这些是我正在使用的效果 模糊、木炭和无效果看起来完全一样。当我选择边缘时,它会显示模糊图像。 噪声效果出现了,但它们看起来像是在图像上手动绘制的红点和绿点 下面是运行应用程序的代码 它在sd卡中搜索带有硬编码名称和扩展名的图像。它得到了所有的ibages,但我无法理解它对这些图像做了什么,因为它在屏幕上只显示一个图像 也不知道tes

我是Android的初学者。我想要一个使用此库的示例应用:。我以前试过使用它,我做了很多改变使它工作,但结果并不令人满意

我只想知道某个特定的东西需要调用哪个类

这些是我正在使用的效果

模糊、木炭和无效果看起来完全一样。当我选择边缘时,它会显示模糊图像。 噪声效果出现了,但它们看起来像是在图像上手动绘制的红点和绿点

下面是运行应用程序的代码

它在sd卡中搜索带有硬编码名称和扩展名的图像。它得到了所有的ibages,但我无法理解它对这些图像做了什么,因为它在屏幕上只显示一个图像

也不知道test.txt是否已创建。此代码在库中作为AndroidMagickActivity显示

在搜索了很长时间后,我对android.mk文件做了一些更改,现在它正在运行,但是输出不是很好

请任何人帮助我提高丁香图书馆的效果或帮助我了解如何使用

我是初学者,不知道如何使用NDK以及如何创建JNI和.so文件

package magick;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import android.magick.R;
import magick.util.DisplayImageMetaData;
import magick.util.MagickBitmap;

import android.util.Log;
import android.view.*;

public class AndroidMagickActivity extends Activity {
    static final int PROGRESS_DIALOG = 0;
    ProgressDialog progressDialog = null;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
        // InputStream stream = getResources().openRawResource(R.raw.app_notes);


        try {
            final MagickImage img = new MagickImage(new ImageInfo("/sdcard/1.jpg"));

            /*
             * ImageView iv = new ImageView(this);
             * iv.setImageBitmap(MagickBitmap.ToBitmap(img));
             * setContentView(iv);
             */
//          setContentView(R.layout.main);
            Spinner s = (Spinner) findViewById(R.id.spinner);
            ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.effects, android.R.layout.simple_spinner_item);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            s.setAdapter(adapter);

            s.setOnItemSelectedListener(new OnItemSelectedListener() {

                public void onItemSelected(AdapterView<?> parent, View view,
                        int pos, long id) {
                    ProgressThread t = new ProgressThread(img, pos);
                    //runOnUiThread(t);
                    t.run();
                }

                public void onNothingSelected(AdapterView<?> parent) {
                    // Do nothing.
                }
            });
            ImageView iv = (ImageView) findViewById(R.id.imageView);
            iv.setImageBitmap(MagickBitmap.ToBitmap(img));
        } catch (MagickApiException e) {
            e.printStackTrace();
        } catch (MagickException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        /*
         * TextView tv = new TextView(this);
         * tv.setText(DisplayImageMetaData.displayMagickImage(img));
         * setContentView(tv);
         */
        int count = 2;
        MagickImage images[] = new MagickImage[count];
        for (int i = 0; i < count; i++) {
            String path = "/sdcard/" + String.valueOf(i + 1) + ".jpg";
            try {
                images[i] = new MagickImage(new ImageInfo(path));
            } catch (MagickException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        try {
            MagickImage image = new MagickImage(images);
            image.setImageFormat("gif");
            String fn = Environment.getExternalStorageDirectory() + "/Pictures/test.gif";
            image.setFileName(fn);
            ImageInfo info = new ImageInfo(fn);
            info.setMagick("gif");
            //image.writeImage(info);
            byte blob[] = image.imageToBlob(info);
            FileOutputStream fos = new FileOutputStream(fn);
            fos.write(blob);
            fos.close();
            FileOutputStream testOS = new FileOutputStream("/mnt/sdcard/test.txt");
            testOS.write("abc".getBytes());
            testOS.close();
        } catch (MagickException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    protected Dialog onCreateDialog(int id, Bundle bundle) {
        switch (id) {
        case PROGRESS_DIALOG:
            /*
             * ProgressDialog dialog =
             * ProgressDialog.show(AndroidMagickActivity.this, "",
             * "Loading. Please wait...", true);
             */
            progressDialog = new ProgressDialog(AndroidMagickActivity.this);
            progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            progressDialog.setMessage("Loading...");
            return progressDialog;
            // return dialog;
        default:
            return null;
        }
    }


    /** Nested class that performs progress calculations (counting) */
    private class ProgressThread extends Thread {

        MagickImage img;
        int pos;

        ProgressThread(MagickImage image, int pos) {
            this.img = image;
            this.pos = pos;
        }

        public void run() {
            int effect = 0;
            AndroidMagickActivity.this.showDialog(PROGRESS_DIALOG);
            switch (pos) {
            case 1:
                effect = NoiseType.UndefinedNoise;
                break;
            case 2:
                effect = NoiseType.UniformNoise;
                break;
            case 3:
                effect = NoiseType.GaussianNoise;
                break;
            case 4:
                effect = NoiseType.MultiplicativeGaussianNoise;
                break;
            case 5:
                effect = NoiseType.ImpulseNoise;
                break;
            case 6:
                effect = NoiseType.LaplacianNoise;
                break;
            case 7:
                effect = NoiseType.PoissonNoise;
                break;
            }
            Bitmap bitmap = null;
            try {
                ImageView iv = (ImageView) findViewById(R.id.imageView);

                MagickImage image = null;
                if (pos < 8)
                    image = img.addNoiseImage(effect);
                else if (pos == 9)
                    image = img.blurImage(5, 1);
                else if (pos == 10)
                    image = img.charcoalImage(5, 1);
                else if (pos == 11)
                    image = img.edgeImage(0);
                if (image != null) {

                    bitmap = MagickBitmap.ToBitmap(image);
                    iv.setImageBitmap(bitmap);
                }
                // bitmap.recycle(); we can't do that.
                AndroidMagickActivity.this.dismissDialog(PROGRESS_DIALOG);
            } catch (MagickException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }    
}
packagemagick;
导入java.io.FileNotFoundException;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入android.app.Activity;
导入android.app.Dialog;
导入android.app.ProgressDialog;
导入android.graphics.Bitmap;
导入android.graphics.drawable.BitmapDrawable;
导入android.os.Bundle;
导入android.os.Environment;
导入android.os.Handler;
导入android.os.Looper;
导入android.os.Message;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemSelectedListener;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.Spinner;
导入android.widget.TextView;
导入android.magick.R;
导入magick.util.DisplayImageMetaData;
导入magick.util.MagickBitmap;
导入android.util.Log;
导入android.view.*;
公共类AndroidMagickActivity扩展活动{
静态最终整数进度对话框=0;
ProgressDialog=null;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//InputStream=getResources().openRawResource(R.raw.app_notes);
试一试{
final MagickImage img=新MagickImage(new ImageInfo(“/sdcard/1.jpg”);
/*
*ImageView iv=新的ImageView(本);
*iv.setImageBitmap(MagickBitmap.ToBitmap(img));
*setContentView(四);
*/
//setContentView(R.layout.main);
微调器s=(微调器)findViewById(R.id.Spinner);
ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.effects,android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
s、 设置适配器(适配器);
s、 setOnItemSelectedListener(新的OnItemSelectedListener(){
已选择公共视图(AdapterView父视图、视图、,
内部位置,长id){
ProgressThread t=新的ProgressThread(img,pos);
//runOnUiThread(t);
t、 run();
}
未选择公共无效(AdapterView父级){
//什么也不做。
}
});
ImageView iv=(ImageView)findViewById(R.id.ImageView);
iv.setImageBitmap(MagickBitmap.ToBitmap(img));
}捕获(magickapie){
e、 printStackTrace();
}捕获(MagickException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
/*
*TextView tv=新的TextView(此);
*tv.setText(DisplayImageMetaData.displayMagickImage(img));
*设置内容视图(电视);
*/
整数计数=2;
MagickImage[]=新MagickImage[count];
for(int i=0;i