gpt4 book ai didi

c# - 实时生成图像的算法帮助

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:50:51 27 4
gpt4 key购买 nike

我想创建一个图像生成助手。我们将把它添加到 C# 解决方案中。但是,我不是后端开发人员,所以我将创建一个虚拟示例并在此处用我自己的话进行解释:-)

更新:我需要帮助的是如何计算以下每个场景的比例。例如。如果我有一个 60x60 的缩略图占位符,而原始图像是 400x300,我必须将 300 设置为 60 并相应地更改 400。

助手看起来像这样:

HelperName('OriginalImageUrl', 'FileName', X, Y, M)

M 是模式,我想它需要决定它是否应该使用宽度或高度来计算......这些是场景:

Thumnails (square):宽度和高度相同,所以它应该使用最短的图像尺寸。

ImagePlaceholder(大部分为矩形):静态高度/宽度。图像需要填充高度/宽度,因此占位符中不会有任何空白区域。将裁剪其中一个维度中过多的内容。如果宽度 != 高度确定它是否为正方形,则可能与缩略图结合使用,只是检查尺寸。

照片包装器:最大高度/宽度。整个图像将被调整以适应这些比例。没有裁剪,只是基本调整大小以适应 2 个给定的容器尺寸。

如果有人可以帮助我解决这个问题,或者知道我可以使用的插件,那就太棒了。

最佳答案

您可以计算比例因子,然后计算输入/输出矩形。应该是这样的(没有测试):

配件:

double scaleX=(double)targetWidth/(double)originalWidth;
double scaleY=(double)targetHeight/(double)originalHeight;

double scaleToFit=Math.Min(scaleX,scaleY);

double newWidth=scaleToFit*originalWidth;
double newHeight=scaleToFit*originalHeight;

double borderX=(targetWidth-newWidth)/2;
double borderY=(targetHeight-newHeight)/2;

Rect InputRect=new Rect(0,0,originalWidth,originalHeight);
Rect OutputRect=new Rect(borderX,borderY,targetWidth-2*borderX,targetHeight-2*borderY);

填充:

double scaleX=(double)targetWidth/(double)originalWidth;
double scaleY=(double)targetHeight/(double)originalHeight;

double scaleToFill=Math.Max(scaleX,scaleY);

double oldWidth=targetWidth/scaleToFill;
double oldHeight=targetHeight/scaleToFill;

double cropX=(originalWidth-oldWidth)/2;
double cropY=(originalHeight-oldHeight)/2;

Rect OutputRect=new Rect(0,0,targetWidth,targetHeight);
Rect InputRect=new Rect(cropX,cropY,oldWidth,oldHeight);

我认为有 blitting 函数可以获取两个图像和两个矩形。使用其中之一。

关于c# - 实时生成图像的算法帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4756179/

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