📜  如何在 Android 中将矢量转换为位图?

📅  最后修改于: 2022-05-13 01:55:45.954000             🧑  作者: Mango

如何在 Android 中将矢量转换为位图?

矢量是与 XML 文件中定义的任何图像对象相关联的一组点、线和颜色。所有这些相关属性都被实时编译以开发图像对象。简单地说,向量是图像对象的编码表示。位图,也称为位图索引或位数组,是从整数到位的映射。它是一种面向像素的存储组织,用于存储数字图像。

位图表示

在本文中,我们将向您展示如何在 Android 中将 Vector 转换为 Bitmap。 IDE 准备就绪后,请按照以下步骤操作。

分步实施

第 1 步:在 Android Studio 中创建一个新项目

要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。我们在 Kotlin 中演示了该应用程序,因此请确保在创建新项目时选择Kotlin作为主要语言。

第 2 步:创建向量

我们创建一个矢量资产,如下所示。要创建矢量资源,请右键单击 res 文件夹,将鼠标拖动到 New,然后选择 Vector Asset 选项。您也可以参考以下文章创建新的矢量资源:如何在 Android Studio 中添加矢量资源?

第 3 步:使用 activity_main.xml 文件

我们在它们之间添加了两个 ImageView 和一个 Button。第一个 ImageView 将显示图像的 Vector 形式。第二个 ImageView 将在单击按钮时显示处理后的位图图像。

XML


  
    
  
    


Kotlin
package org.geeksforgeeks.myapplication
  
import android.content.Context
import android.graphics.Bitmap
import android.graphics.Canvas
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.ImageView
import androidx.core.content.ContextCompat
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declaring and initializing the two 
        // ImageViews and the Button from the layout file.
        val mImageViewBefore = findViewById(R.id.image_view_1)
        val mImageViewAfter = findViewById(R.id.image_view_2)
        val mButton = findViewById


第 4 步:使用 MainActivity.kt 文件

在代码中,我们实现了一个函数,该函数接收矢量位置并处理成位图。在主代码中调用该函数将矢量图转换为位图形式。代码中添加了注释以更详细地理解代码。

科特林

package org.geeksforgeeks.myapplication
  
import android.content.Context
import android.graphics.Bitmap
import android.graphics.Canvas
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.ImageView
import androidx.core.content.ContextCompat
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declaring and initializing the two 
        // ImageViews and the Button from the layout file.
        val mImageViewBefore = findViewById(R.id.image_view_1)
        val mImageViewAfter = findViewById(R.id.image_view_2)
        val mButton = findViewById

输出:

我们可以看到,单击按钮后,矢量的位图版本显示在第二个 ImageView 中。