gpt4 book ai didi

android - 无法对具有不同高度和宽度的位图进行样式化

转载 作者:行者123 更新时间:2023-11-29 02:20:11 25 4
gpt4 key购买 nike

我在代码实验室中使用 Google 提供的一种 Tensorflow 模型在图像上应用艺术风格。

我正在使用下面的代码来应用样式:

  private fun stylizeImage(bitmap: Bitmap) {
val intValues = IntArray(desiredWidth * desiredHeight)
val floatValues = FloatArray(desiredWidth * desiredHeight* 3)

bitmap.getPixels(intValues, 0, bitmap.width, 0, 0, bitmap.width, bitmap.height)

for (i in 0 until intValues.size) {
val value = intValues[i]
floatValues[i * 3] = ((value shr 16) and 0xFF) / 255.0f
floatValues[i * 3 + 1] = ((value shr 8) and 0xFF) / 255.0f
floatValues[i * 3 + 2] = (value and 0xFF) / 255.0f
}
// Copy the input data into TensorFlow.
inferenceInterface.feed(INPUT_NODE, floatValues, 1, bitmap.width.toLong(), bitmap.height.toLong(), 3)
inferenceInterface.feed(STYLE_NODE, styleVals, NUM_STYLES.toLong())

// Execute the output node's dependency sub-graph.
inferenceInterface.run(arrayOf(OUTPUT_NODE), false)

// Copy the data from TensorFlow back into our array.
inferenceInterface.fetch(OUTPUT_NODE, floatValues)

for (i in 0 until intValues.size) {
intValues[i] = (0xFF000000.toInt()
or ((floatValues[i * 3] * 255).toInt() shl 16)
or ((floatValues[i * 3 + 1] * 255).toInt() shl 8)
or (floatValues[i * 3 + 2] * 255).toInt())
}

val newBm = Bitmap.createBitmap(intValues, bitmap.width, bitmap.height, Bitmap.Config.ARGB_8888)
imageView.setImageBitmap(newBm)
}

问题在于,如果 desiredWidthdesiredHeight 的尺寸相同(方形图像),则上述代码可以正常工作。如果尺寸不同(矩形图像),则输出图像不符合预期,并且某些图案会重复,如下所示。 enter image description here

任何帮助将不胜感激。谢谢。

最佳答案

您是否尝试过 getScaleType() 返回图像缩放类型? https://developer.android.com/reference/android/widget/ImageView

关于android - 无法对具有不同高度和宽度的位图进行样式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56649030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com