如何将文本添加到图像并另存为新图像

时间:2012-01-19 12:38:06

标签: android android-layout

我正在尝试创建一个为图片添加随机引用的Android应用。

一般过程如下:

  1. 从启动应用时显示的自定义指定图片开始。
  2. 从这张图片中,用户可以点击它并生成一个新的随机“引用”,覆盖在图像上。
  3. 用户可以使用他选择的报价保存新创建的图像,并将其设置为壁纸。
  4. 我已经到了可以在ImageView中显示图像的地步。

    我的引号列表存储在我的strings.xml文件中。

3 个答案:

答案 0 :(得分:6)

我在应用中做了类似的事情。使用画布。

我编辑了一段我的代码,实际上在背景上添加了几个其他图像。

代码肉:

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;
}

将您自己的版本放在一个类中,并为其提供图像ID和其他任何内容。它会返回一个位图,供您随意使用(在imageview中显示,让用户保存并设置为wallpape)。

答案 1 :(得分:1)

我知道几年前我用imagemagick为PC做了这个(保存带文字的图像)

似乎像imagemagick已被移植到android,所以我会开始深入研究它们。

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

答案 2 :(得分:1)

确定!弗朗西斯科我的朋友,我有一个想法,虽然不是一个有效的代码('因为我不是很擅长)。所以,这是:

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文件中保存了引号。使用这些字符串的ID,我认为您可以实现switch案例场景,使用java imports - java.util.Scannerjava.util.Random。最终,在ImageView onClickListener中使用这些可以/应该产生所需的输出。

我知道我的答案太模糊了,但我有一种微弱的希望,它已经让你一分钟领先于你可以实施什么。我真的希望有比这更好的答案。如果没有,那么我希望这对你有所帮助,我也希望我不会把你带到错误的方向,因为这只是一个猜测。对不起,但这就是我的全部。