2012-01-19 6 views
3

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

Общий процесс это:

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

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

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

+0

Извините за то, что вы слишком долговечны и не совсем понятны, спасибо Томасу. – Francesco

+0

Это всего лишь одно изображение или несколько изображений?Я понял часть строк/цитат. Просто хочу быть ясным в части изображения. – Ghost

+0

Спасибо за ответ. Изображение всегда одно и то же, что может измениться - это цитата, напечатанная над ней, и это должно происходить, когда пользователь нажимает на изображение. – Francesco

ответ

1

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

Реализовать onClickListener() на вашем ImageView, как показано ниже:

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 imports - java.util.Scanner и java.util.Random. В конечном счете, использование этих данных в вашем ImageViewonClickListener может/должно привести к желаемому результату.

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

+0

Ваш ответ на самом деле велик и потому, что я знаю об одном и том же. Используя случайную переменную, которая генерирует мне число от 1 до N (где N - количество кавычек) и связывает печать текста с событием OnClick :) – Francesco

+0

Но я также немного переместил мою логику проекта, чтобы просто сделать приложение установить новый живые обои, которые будут выполнять всю работу, а не использовать приложение -> генерировать новые кавычки -> сохранить изображение ... в чем смысл иметь всего одну цитату за раз :) – Francesco

+0

Прохладный! Тогда как насчет принятия моего ответа и голосования по нему? ;) – Ghost

1

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

Похоже ImageMagick были перенесены на Android, так что я хотел бы начать копаться в тир документации.

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

6

я сделать что-то вроде этого в приложении. Используйте 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; 
} 

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

Смежные вопросы