当前位置: 首页 > 知识库问答 >
问题:

更改位图尺寸而不修改长宽比

徐嘉勋
2023-03-14

有没有办法在不拉伸位图的情况下增加位图的宽度(或高度)?基本上,我有一个200x100的位图,我想通过在左侧附加50个(白色/透明)像素,在右侧附加50个像素,使其成为正方形(200x200)。

我不想在屏幕上画这个位图,所以,理想情况下,我应该以“聪明”的方式使用转换矩阵或类似的东西,但是我就是想不出来...

共有1个答案

卫建义
2023-03-14

您可以尝试以下方式:

        // creating a dummy bitmap
        Bitmap source = Bitmap.createBitmap(100, 200, Bitmap.Config.ARGB_8888);
        Bitmap background;
        Canvas canvas;

        if(source.getHeight() == source.getWidth()) // do nothing
            return;

        // create a new Bitmap with the bigger side (to get a square)
        if(source.getHeight() > source.getWidth()) {
            background = Bitmap.createBitmap(source.getHeight(), source.getHeight(), Bitmap.Config.ARGB_8888);
            canvas = new Canvas(background);
            // draw the source image centered
            canvas.drawBitmap(source, source.getHeight()/4, 0, new Paint());
        } else {
            background = Bitmap.createBitmap(source.getWidth(), source.getWidth(), Bitmap.Config.ARGB_8888);
            canvas = new Canvas(background);
            // draw the source image centered
            canvas.drawBitmap(source, 0, source.getWidth()/4, new Paint());
        }

        source.recycle();
        canvas.setBitmap(null);
        // update the source image
        source = background;

注意:黑色边框不是图像的一部分。我选择深红色作为背景色,以查看图像的实际大小,并将其与黑色和源图像的颜色(始终绘制在中心)区分开来。

通过在画布上绘制它,它在屏幕上是不可见的。我使用ImageView只是为了测试代码。

这是我得到的w=200,h=100的输出:

这是我得到的w=100,h=200的输出:

 类似资料:
  • 我有一个名为sampleImage的图像,我试图沿着x轴和y轴拉伸它,如下所示,当它处于横向时,它根本不起作用 然后,我在viewDidLayoutSubviews()中做了如下操作, 如果设备在中,这是有效的,但是一旦您将其旋转到并返回,所有更改都将消失。如何确保这些尺寸在旋转时保持不变?

  • 本文向大家介绍php修改上传图片尺寸的方法,包括了php修改上传图片尺寸的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php修改上传图片尺寸的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的php程序设计有所帮助。

  • 问题内容: 我有以下代码: 如您所见,我要在单击按钮时更改大小。可能吗?上面的代码不起作用,我的意思是大小没有改变。如何动态更改尺寸? 感谢致敬。编辑: 交换选择一个JList行的面板。 ViewPanel#changeView(),这将交换面板: 问题答案: 使用布局管理器时,永远不要使用setSize()。布局管理器的工作是确定大小。您可以通过设置指定的大小或最小或最大大小来向布局管理器提供提

  • Many web-developers forget to write width and height attributes for <img> tags which leads to poor UX. This action helps you to automate this process: simply place caret inside <img> tag and run this

  • 这个问题很基本,但是我想确定没有比我现在做的更好的方法了。假设我有一个脸书图标。到目前为止,当用户悬停在该图像上时,我会显示不同的图像以更改颜色。有没有一种替代的CSS方法来做到这一点,所以我不使用多个图像? 在下面的小提琴中,我试图改变背景,但这只覆盖了整个图像。 JSFIDLE

  • 我很想知道相互独立的最大位图宽度和高度是多少。我确实发现最大尺寸是32768x32768,但这只是一个完美的正方形吗?32768x32768=1073741824是我可以玩的像素总数吗?我可以在宽度和高度之间重新排列这些像素,只要总数不超过? 如果我这样做,我不会有任何错误: 将位图变暗为位图=新位图(450100000) 即使我无法在保存后打开图像(我不需要这样做),我仍然能够使用位图,但我相信