我正在从本地服务器通过套接字接收我的图像的byteArray。byteArray表示为RGB。我正在将其转换为位图。我检查了位图不为空。但当我使用ImageView.setImageBitmap(位图)时,我的Android应用程序崩溃。我已经尝试了很多方法,但我还没有找到解决方案。请帮助我
class Cam : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
Log.d("Cam activity", "onCreate")
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_cam)
val button_back : Button = findViewById(R.id.button_back)!!
var textView : TextView = findViewById(R.id.textView)!!
var imageView: ImageView = findViewById(R.id.Image_update)!!
Thread {
Thread.sleep(1000)
var byteArray = ByteArray(76032)
Connection.inBytesCam?.read(byteArray)
var nrOfPixels = byteArray.size / 3 // Three bytes per pixel.
var pixels = IntArray(nrOfPixels)
for (i in 0 until nrOfPixels){
var r = byteArray.get(3*i).toInt()
var g = byteArray.get(3*i + 1).toInt()
var b = byteArray.get(3*i + 2).toInt()
pixels.set(i, Color.rgb(r, g, b))
}
var bitmap = Bitmap.createBitmap(pixels, 176, 144, Bitmap.Config.ARGB_8888)
imageView.setImageBitmap(bitmap)
}.start()
button_back.setOnClickListener {
Thread {
runOnUiThread {
val intent = Intent(this@Cam, ControlActivity::class.java)
startActivity(intent)
}
}.start()
}
}
}
XML语言
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/purple_200"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="-103dp">
<Button
android:id="@+id/button_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/purple_700"
android:fontFamily="monospace"
android:text="Back"
android:textAlignment="center"
android:textSize="34sp"
app:iconTint="@color/purple_700"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.862" />
<TextView
android:id="@+id/textView"
android:layout_width="246dp"
android:layout_height="135dp"
android:layout_marginBottom="52dp"
android:text="LOG"
android:textAlignment="textStart"
app:layout_constraintBottom_toTopOf="@+id/button_back"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.496"
app:layout_constraintStart_toStartOf="parent" />
<ImageView
android:id="@+id/Image_update"
android:layout_width="176dp"
android:layout_height="144dp"
android:layout_marginTop="100dp"
app:layout_constraintBottom_toTopOf="@+id/textView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
app:srcCompat="@drawable/camera_recording" />
</androidx.constraintlayout.widget.ConstraintLayout>
我使用DataInputStream/DataOutputStream将ImageBytes从本地服务器传输到Android上的客户端。我找不到任何解决我的问题的方法
一般来说,我需要在循环中更新图像,就像视频播放器一样。但是我甚至不能更新一个图像:(
1条答案
按热度按时间dxpyg8gm1#
使用Glide库如下
添加依赖关系;
用于您的活动等。