Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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
Android 如何将文本添加到图像并另存为新图像_Android_Android Layout - Fatal编程技术网

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

Android 如何将文本添加到图像并另存为新图像,android,android-layout,Android,Android Layout,我正在尝试创建一个Android应用程序,在图像中添加随机引用 一般过程如下: 从启动应用程序时显示的自定义给定图像开始 从这个图像中,用户所能做的就是点击它,生成一个新的随机“引号”,覆盖在图像上 用户可以使用所选的报价保存新创建的图像,并将其设置为墙纸 我已经到了可以在ImageView中显示图像的程度 我的引号列表存储在我的strings.xml文件中。我知道几年前我用imagemagick为PC做了这件事(用文本保存图像) 看起来imagemagick已经移植到android上了,所以我

我正在尝试创建一个Android应用程序,在图像中添加随机引用

一般过程如下:

  • 从启动应用程序时显示的自定义给定图像开始
  • 从这个图像中,用户所能做的就是点击它,生成一个新的随机“引号”,覆盖在图像上
  • 用户可以使用所选的报价保存新创建的图像,并将其设置为墙纸
  • 我已经到了可以在ImageView中显示图像的程度


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

    我知道几年前我用imagemagick为PC做了这件事(用文本保存图像)

    看起来imagemagick已经移植到android上了,所以我会开始深入研究他们的文档


    我在应用程序中执行类似操作。使用画布

    我编辑了一段代码,实际上在背景上添加了一些其他的图片

    代码的核心:

    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中显示,让用户保存并设置为Wallpap)。

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

    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
    文件中保存了引号。使用这些字符串的ID,我认为您可以实现一个
    切换
    案例场景,其中它使用
    java导入
    -
    java.util.Scanner
    java.util.Random
    。最终,在
    ImageView
    onClickListener
    中使用这些可以/应该得到所需的输出


    我知道我的答案太模糊了,但我有一个微弱的希望,那就是它给了你一分钟的时间,让你知道你可以实施什么。我真的希望有比这更好的答案。如果没有,那么我希望这对你有所帮助,我也希望我没有把你引向错误的方向,因为这只是一个猜测。对不起,我只有这些了

    对不起,太长了,不太清楚,谢谢托马斯。这只是一张图片还是多张图片?我理解字符串/引号部分。我只是想澄清一下图片部分。谢谢你的回复。图像总是一样的,可以改变的是打印在图像上的引用,这应该在用户点击图像时发生。你的回答其实很好,因为我也想到了同样的事情。使用随机变量生成一个介于1和N之间的数字(其中N是引号的数量)并将文本打印与OnClick事件关联:)但我也移动了我的项目逻辑,让应用程序安装一个新的实时墙纸,它将完成所有工作,而不是使用应用程序-->生成新引号-->保存图像…每次只有一个引号有什么意义:)酷!那么接受我的答案并投票表决怎么样