Скомпилируйте Imagemagick для Android с помощью NDK

#android #imagemagick

#Android #imagemagick

Вопрос:

Я новичок в Android, поэтому хочу задать вопрос. Я хочу использовать ImageMagick библиотеку для редактирования изображений в Android, но я не хочу использовать JMagick интерфейс.

Кто-нибудь импортировал Imagemagick на Android раньше? Если да, не могли бы вы, пожалуйста, дать мне несколько советов о том, как это сделать?

Ответ №1:

Я портировал его на Android, и код находится на github.

Комментарии:

1. Спасибо за ваш код. Но у меня возникли трудности с компиляцией вашего кода на моем компьютере. Можете ли вы объяснить, как работать с вашим кодом?

2. В последнем репозитории github включен скрипт перестройки. Вы можете взглянуть на это. По сути, вы изменили переменную SDK в этом скрипте, и все будет работать.

3. Я скачал код, но у меня возникли проблемы с его использованием. Прежде всего, я не могу его скомпилировать, он выдает некоторые ошибки freetype missing, поэтому я понял это. итак, из старого коммита. Теперь у меня возникли проблемы, потому что в пакете Magick много ссылок на java.awt, но я уверен, что awt недоступен в Android

4. Есть ли у вас исполняемые двоичные файлы для Android?

5. Как конвертировать фреймы в gif с его помощью?

Ответ №2:

Я думаю, что никто еще не портировал, но вы можете сделать это самостоятельно. В основном вам нужно будет получить исходные тексты и создать android.mk файл.

Есть несколько ссылок, которые помогли мне создать другую библиотеку:

Ответ №3:

Только что портировал его сюда, все еще отрывочно, но работает для большинства.

Ответ №4:

Используйте этот один, он был скомпилирован. это не awt; вам просто нужно скомпилировать тест apk.Вот тестовый пример:

 public class TesteNdkActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        try {
            ImageInfo i = new ImageInfo("/sdcard/DCIM/Camera/IMG_20120226_230240.jpg");
            MagickImage m = new MagickImage(i);

            int newHeight = (int) ((640/(float)m.getWidth()) * m.getHeight());
            m = m.scaleImage(640, newHeight);
            m = m.cropImage(new Rectangle((640-480)/2, 0, 480, 480));
            m = m.charcoalImage(0.5, 0.5);

            try {
                byte blob[] = m.imageToBlob(i);
                FileOutputStream fos = new FileOutputStream(new File("/sdcard/foto_teste.jpg"));
                fos.write(blob);
                fos.close();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        } 
        catch (MagickException e) {
            e.printStackTrace();
        }
    }
}
  

(текстовое приложение скроет картинку в большой двоичный объект)
У меня все получилось, у вас все получится.
Наслаждайтесь.

Комментарии:

1. Используйте этот github.com/paulasiimwe/Android-ImageMagick для ответа выше.

2. Как добавить это в Android Studio 1.5?

Ответ №5:

Вместо этого вы можете выбрать библиотеку opencv!

Комментарии:

1. Вот проблема: OpenCV ориентирован на компьютерное зрение, в то время как ImageMagick предназначен для более общей обработки изображений. Имеет смысл объединить обе библиотеки, но, на мой взгляд, использование OpenCV вместо ImageMagick, если у вас есть задача, которую может выполнить только ImageMagick, не имеет смысла.