gpt4 book ai didi

ios - 在 iOS 上扩展图像重复水平线和重复垂直线

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:40 25 4
gpt4 key购买 nike

我有图像,在该图像中我想重复水平和垂直线,所以我扩展了我的图像。

例如,我有一个 50X50 的图像,我希望通过重复 x = 15 行将其变为 50x70。这在 iOS 上是否可行?

编辑:

好的,我会尽量说得更清楚。我有一个 60x60 的图像,它基本上是矩形,宽度为 60,高度为 60。现在我想通过重复 x = 40 的像素来将该图像拉伸(stretch)为 80x60。或者简单地绘制它,我有:

  123456
1 XXXAXX
2 XXXAXX
3 XXXAXX
4 XXXAXX
5 XXXAXX
6 XXXAXX

我希望它是:

  12345678
1 XXXAAAXX
2 XXXAAAXX
3 XXXAAAXX
4 XXXAAAXX
5 XXXAAAXX
6 XXXAAAXX

我重复图像上第 40 行上的所有像素。我想对任意数量的图像执行此操作。

最佳答案

实现所需结果的关键是 UIImage 上的 resizableImageWithCapInsets:。例如,取下面这张 50px x 50px 的图片(注意:这是@2x 版本):

Retina-scale 50x50 image with a single pixel vertical red line offset by 15px in the x-axis

如果要水平拉伸(stretch)红线,首先定义一个描述红线位置的UIEdgeInset:

UIEdgeInsets redLine = UIEdgeInsetsMake(0, 15, 0, 34);

这定义了从左侧偏移 15 像素的图像的一个像素宽切片。 right 偏移量为 34,因为可拉伸(stretch)切片的右边缘为 16px,50(图像宽度)减 16 为 34。

现在我们有了 UIEdgeInset,我们可以加载图像并创建它的可拉伸(stretch)版本:

UIImage *stretchableImage = [[UIImage imageNamed:@"my_image"] resizableImageWithCapInsets:redLine];

我们可以将此 stretchableImage 分配给具有我们需要的框架的 UIImageView:

UIImageView *stretchedImageView = [[UIImageView alloc] initWithImage:stretchableImage];
stretchedImageView.frame = CGRectMake(100,100,70,50); // The image view is 70px wide

在应用程序中,stretchedImageView 将如下所示:

enter image description here

还有另一种称为 resizableImageWithCapInsets:resizingMode: 的方法,它允许您平铺图像切片而不是拉伸(stretch)它,因此您可以做一些疯狂的事情,比如拍摄这张图像:

enter image description here

然后像这样水平平铺它:

enter image description here

关于ios - 在 iOS 上扩展图像重复水平线和重复垂直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19250837/

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