Как добавить текст в изображение и сохранить как новое изображение

Я пытаюсь создать приложение для Android, которое добавляет случайную цитату к изображениям.

Общий процесс таков:

  1. Начните с пользовательского изображения, которое отображается при запуске приложения.
  2. Из этого изображения, который может сделать пользователь, нажмите на него и создайте новую случайную «цитату», которая накладывается на изображение.
  3. Пользователь может сохранить только что созданное изображение с выбранной им котировкой и установить его в качестве обоев.

Я дошел до точки, где я могу отображать изображение в ImageView.

Мой список котировок хранится в моем файле strings.xml .

ОК! Франческо, мой друг, у меня есть идея, хотя и не рабочий код («Потому что я не очень хорош в этом»). Итак, вот оно:

Внедрите onClickListener() в свой ImageView как onClickListener() ниже:

 ImageView iv = (ImageView)findViewById(R.id.imageview1); iv.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { /** When I say do your stuff here, I mean read the user input and set your wallpaper here. I'm sorry that I don't really know how to save/set the wallpaper */ } }); 

Когда дело доходит до чтения пользовательских ввода / генерации случайных котировок, вы можете сделать это:

Вы сказали, что у вас уже есть кавы, сохраненные в файле strings.xml . Используя идентификаторы этих строк, я думаю, вы можете реализовать сценарий сценария switch где он использует java importsjava.util.Scanner и java.util.Random . В конечном счете, использование этих параметров в вашем ImageView onClickListener может / должно привести к желаемому результату.

Я знаю, что мой ответ слишком расплывчатый, но у меня есть слабая надежда, что он дал вам минутку о том, что вы можете реализовать. Я серьезно надеюсь, что есть лучшие ответы, чем это. Если нет, то я надеюсь, что это поможет вам, и я также надеюсь, что я не буду вести вас в неправильном направлении, поскольку это всего лишь просто спекуляция. Извините, но это все, что у меня есть.

Я делаю что-то подобное в приложении. Используйте Canvas.

Я отредактировал кусок моего кода, который на самом деле добавляет пару других изображений на задний план и прочее.

Мясо кода:

 private static Bitmap getPoster(...) { Bitmap background = BitmapFactory.decodeResource(res, background_id) .copy(Bitmap.Config.ARGB_8888, true); Canvas canvas = new Canvas(background); Typeface font = Typeface.createFromAsset(res.getAssets(), FONT_PATH); font = Typeface.create(font, Typeface.BOLD); Paint paint = new Paint(); paint.setTypeface(font); paint.setAntiAlias(true); paint.setColor(Color.WHITE); paint.setStyle(Style.FILL); paint.setShadowLayer(2.0f, 1.0f, 1.0f, Color.BLACK); float fontSize = getFontSize(background.getWidth(), THE_QUOTE, paint); //You'll have to define a way to find a size that fits, or just use a constant size. paint.setTextSize(fontSize); canvas.drawText(THE_QUOTE, (background.getWidth() - paint.measureText(THE_QUOTE)) / 2, background.getHeight() - FILLER_HEIGHT, paint); //You might want to do something different. In my case every image has a filler in the bottom which is 50px. return background; } 

Поместите свою собственную версию этого класса и подайте ему идентификатор изображения и все остальное. Он возвращает растровое изображение для вас, чтобы делать все, что вам нужно (отображать его в режиме просмотра изображений, позволять пользователю сохранять его и устанавливать в качестве настенной панели).

Я знаю, что сделал это для ПК с imagemagick несколько лет назад (сохранить изображение с текстом)

Похоже, что imagemagick портирован на андроид, поэтому я начну копаться в документации.

https://github.com/lilac/Android-ImageMagick