使用Surfaceview尺寸调整相机视图

时间:2018-09-28 15:32:48

标签: android camera surfaceview dimensions

我正在开发一个读取条形码的应用程序。第一步,我有一个很大的SurfaceView,可以很好地看到相机预览,但是现在我将Surfaceview的尺寸设置为类似于条形码的尺寸,但是相机的可视化效果不好(它太小了)。有人可以帮我拉伸相机预览吗?谢谢

在这里管理探测器和表面视图:

公共类LettoreBarcode扩展了片段{

class node():
    def __init__(self, data, next_node = None):
        self.data = data
        self.next_node = next_node

    def get_data(self):
        return self.data

    def get_next(self):
        return self.next_node

    def set_next(self, new_node):
        self.next_node = new_node

class LinkList(object):

    def __init__(self, head = None):
        self.head = head

    def add(self, data):
        new_node = node(data)
        new_node.set_next(self.head)
        self.head = new_node

    def printlist(self):
        current_node = self.head
        while (current_node != None):
            print (current_node.get_data(), end = "->")
            current_node = current_node.get_next()
        print ()

def merge(L1, L2):

    temp = None

    if L1 is None:
        return L2

    if L2 is None:
        return L1
    if L1.data >= L2.data:
        temp = L1
        temp.next_node = merge(L1.next_node, L2)
    else:
        temp = L2
        temp.next_node = merge(L1, L2.next_node)

    return temp


def main():

    list1 = LinkList()
    list1.add(10)
    list1.add(20)
    list1.add(30)

    print("list2: ", end=" " )
    list1.printlist()

    list2 = LinkList()
    list2.add(11)
    list2.add(21)
    list2.add(51)
    print("list2: ", end=" " )
    list2.printlist()

    list3 = LinkList()

    list3.head = merge(list1.head, list2.head)
    print("merge link list: ", end=" " )
    list3.printlist()

if __name__ == "__main__":
    main()

}

这是我如何可视化具有较小表面视图的相机的方法:

https://i.stack.imgur.com/TMunJ.png

我是android开发的新手,所以对不起,如果代码中有很多错误。

也很抱歉我的英语。

谢谢你们!

1 个答案:

答案 0 :(得分:0)

为了仅显示一部分摄像机输入,即在屏幕上进行裁剪,您需要一个表面尺寸合适的表面视图,该尺寸适合摄像机框架的宽高比,并用一些非透明视图覆盖它,以仅保留一部分它可见。不要将SurfaeView放在滚动布局中:

所以,而不是

<SurfaceView width: match_parent height: 400dp />

您需要例如如以下说明的FrameLayout: Is it possible to crop camera preview?

这不会改变到达条形码检测器的框架。但这不应该让您担心;检测器将正确处理未裁剪的图像。