小编Tob*_*obi的帖子

如何将图像从AVCapture裁剪到显示屏上看到的矩形

这让我发疯,因为我无法让它发挥作用.我有以下场景:

我正在使用AVCaptureSessionAVCaptureVideoPreviewLayer创建自己的相机界面.界面显示一个矩形.以下是AVCaptureVideoPreviewLayer填满整个屏幕的内容.

我希望以某种方式裁剪捕获的图像,结果图像显示在显示屏上的rect中看到的内容.

我的设置如下:

_session = [[AVCaptureSession alloc] init];
AVCaptureSession *session = _session;
session.sessionPreset = AVCaptureSessionPresetPhoto;

AVCaptureDevice *camera = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if (camera == nil) {
    [self showImagePicker];
    _isSetup = YES;
    return;
}
AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
captureVideoPreviewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;

captureVideoPreviewLayer.frame = self.liveCapturePlaceholderView.bounds;
[self.liveCapturePlaceholderView.layer addSublayer:captureVideoPreviewLayer];

NSError *error;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:camera error:&error];
if (error) {
    HGAlertViewWrapper *av = [[HGAlertViewWrapper alloc] initWithTitle:kFailedConnectingToCameraAlertViewTitle message:kFailedConnectingToCameraAlertViewMessage cancelButtonTitle:kFailedConnectingToCameraAlertViewCancelButtonTitle otherButtonTitles:@[kFailedConnectingToCameraAlertViewRetryButtonTitle]];
    [av showWithBlock:^(NSString *buttonTitle){
        if ([buttonTitle isEqualToString:kFailedConnectingToCameraAlertViewCancelButtonTitle]) { …
Run Code Online (Sandbox Code Playgroud)

ios avcapturesession

40
推荐指数
3
解决办法
1万
查看次数

纵向模式下的iOS自动布局性能问题.[NSISEngine优化]

我遇到了一个非常奇怪的问题,我想知道,如果有人能帮助我,因为我完全迷失了.

上下文:我正在开发一个具有相对简单层次结构的app.只是一些视图控制器,但相当多的高分辨率图像.它们UIScrollView以一些文本等呈现.在纵向模式下测试时,滚动视图根本不能平滑滚动.似乎帧速率下降到大约4-5 fps.首先我认为这是因为高分辨率的图像.

但随后我将iPad转为横向模式,一切顺利.由于我有一个单独的xib文件用于纵向和横向,我认为在portrait-xib中必须存在问题.事实证明,没有.两者都具有相同的VC类,因此使用相同的代码和两个xib几乎相同,除了视图的大小和位置.

为了缩小问题范围,我使用了Instrument的TimeProfiler来查看导致问题的原因.事实证明,TimeProfiler显示了一些调用[NSISEngine optimize](触发NSLayoutConstraint).在纵向模式下,更多的呼叫和那些呼叫花了更长的时间.在树的下方,我看到在纵向模式下[NSISEngine optimize]调用,[NSISEngine fixupIntegralizationViolations]而在风景中它没有.

我甚至从应用程序中删除了除rootVC之外的所有viewcontroller,以及rootVC提供的另一个.所呈现的vc只包含一些图像,按钮和一些动画.它只有一个xib用于两个方向,并且(与其他所有其他方式一样)使用autolayout进行布局.

布局在两个方向都应该工作,没有歧义(据我所知,至少po [[UIWindow keyWindow] _autolayoutTrace]没有显示).

我附上了vc演示过程的TimeProfile截图.一个用于纵向,一个用于横向.正如您所看到的那样,在横向[NSISEngine optimize]拍摄时,只需要一毫秒的时间就可以拍摄超过3000毫秒的照片.

有没有人可以告诉我为什么会这样?或者也许知道我能做些什么来找出问题所在?

任何帮助将不胜感激!

谢谢

链接到更大版本的图像:链接

仪器Timeprofiler截图

ios autolayout

20
推荐指数
1
解决办法
2782
查看次数

如何合成连接表的属性

我有一个像这样定义的视图:

CREATE VIEW [dbo].[PossiblyMatchingContracts] AS
SELECT 
    C.UniqueID,
    CC.UniqueID AS PossiblyMatchingContracts
FROM  [dbo].AllContracts AS C
    INNER JOIN [dbo].AllContracts AS CC
        ON C.SecondaryMatchCodeFB = CC.SecondaryMatchCodeFB
            OR C.SecondaryMatchCodeLB = CC.SecondaryMatchCodeLB
            OR C.SecondaryMatchCodeBB = CC.SecondaryMatchCodeBB
            OR C.SecondaryMatchCodeLB = CC.SecondaryMatchCodeBB
            OR C.SecondaryMatchCodeBB = CC.SecondaryMatchCodeLB
WHERE C.UniqueID NOT IN
    (
        SELECT UniqueID FROM [dbo].DefinitiveMatches
    )
    AND C.AssociatedUser IS NULL
    AND C.UniqueID <> CC.UniqueID
Run Code Online (Sandbox Code Playgroud)

这基本上是找到第一个名字和生日匹配的合同.这非常有效.现在我想为每一行添加一个合成属性,其中只有一个源行的值.

让我举个例子来说明一点.假设我有下表:

UniqueID  | FirstName | LastName  | Birthday

1         | Peter     | Smith     | 1980-11-04
2         | Peter     | Gray      | 1980-11-04 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

17
推荐指数
1
解决办法
343
查看次数

如何对需要特定文件的类进行单元测试

我目前正在努力学习正确的单元测试.所以现在我正在尝试为一个类编写单元测试,该类应该将XML-File中的数据映射到正确的对象.当然,该类的所有功能都取决于相应XML文件的存在.XML文件加载在类的构造函数中.

我正在使用C#和NUnit.到目前为止,我有两个测试:

[Test]
public void ShouldAllowInstanceToBeCreatedWhenXMLFileIsPresent()
{
    if (File.Exists(SettingsReader.XML_SETTINGS_PATH))
    {
        SettingsReader settingsReader = new SettingsReader();
        Assert.AreNotEqual(null, settingsReader);
    }
}

[Test]
[ExpectedException("Telekanzlei.Clientmanager.XMLDataLayer.XMLFileNotFoundException")]
public void ShouldThrowExceptionWhenXMLFileIsNotPresent()
{
    if (!File.Exists(SettingsReader.XML_SETTINGS_PATH))
    {
        SettingsReader settingsReader = new SettingsReader();
    }
        else
            throw new XMLFileNotFoundException();
    }
Run Code Online (Sandbox Code Playgroud)

我不确定在测试中检查文件是否存在是正确的方法,所以对这些测试的任何建议也是受欢迎的.但我的问题是,如何进行以下测试.如果XML文件不存在,显然所有后续测试都将失败.

那么我是否认为XML文件存在,同时请记住,失败的测试只是意味着它不是?这对我来说似乎不对.

是否有一般模式来处理这样的问题?

感谢任何帮助

编辑:重写第二个测试,因为如果文件实际存在则失败...

edit2:可能有助于告诉你,SettingsReader实际上做了什么.到目前为止它看起来像这样:

public class SettingsReader
{
    public static readonly string XML_SETTINGS_PATH = "C:\\Telekanzlei\\Clientmanager_2.0\\Settings.xml";

    public XElement RootXElement { get; private set; }

    public SettingsReader()
    {
        if (!File.Exists(XML_SETTINGS_PATH))
            throw new XMLFileNotFoundException();
        using (var fs = File.OpenRead(XML_SETTINGS_PATH))
        {
            RootXElement = …
Run Code Online (Sandbox Code Playgroud)

c# nunit unit-testing

10
推荐指数
2
解决办法
4820
查看次数

JavaFX - 如何创建简单的自定义绘制控件?

我有把图形网络编辑器应用程序编程为大学项目的任务.为此,我需要三种类型的项目/控件.圆形,矩形和箭头连接其他形状(整个过程在某些方面有点像MS Visio).形状/控件需要一些额外的功能,如移动,缩放上下文菜单等.此外,我需要完全控制这些对象的图形表示,即我想自己"绘制"它们或者至少能够像我一样修改它们需要.

我正在使用JavaFX,几乎没有经验.所以我想知道,实现这些自定义控件的最佳方法是什么.它需要使用JDK 7,因此使用SkinBaseBehaviourBase不是一个选项,因为它们在JDK 8之前是私有的.

我在考虑子类化PathCanvas用作我的控件.但我对做出明智决定的影响知之甚少.

有人可以给我一些建议,要考虑哪些基类以及可能带来的影响?

多谢.

user-interface javafx

6
推荐指数
1
解决办法
3193
查看次数

如何用C#表示MySQL数据库模式?

标题不是那么准确,但我无法想出更好的标题.

我正在尝试为MS的Forefront Identity Manager编写MySQL连接器(FIM基本上是一个同步引擎,它使用元目录同步各种数据源之间的身份).但是我很难找到合适的设计.

假设我想将数据库中的用户数据导入到FIM的metaverse中.用户对象具有各种属性,如firstname,lastname,address等.在数据库中,这些属性可以在多个表之间分配.FIM最终需要将这些属性合并到一个对象中.因此,用户需要配置连接器以告诉它数据如何存储在数据库中.

我想知道什么是代表这种配置的"最佳"方式.有两种选择(我的):

  1. 我可以保存一个合并/连接数据的选择查询,这样结果就是一个包含所有所需属性的"表".这个问题是我认为我必须对这个查询字符串进行某种解析来创建一个fim兼容的模式(它基本上是对象类型的名称(fe"person")和属性列表).这个模式需要可以单独从查询字符串创建而不实际执行查询(我可以执行一些假查询,如果这样可以简化过程).
  2. 我可以创建一些类来表示数据库模式,即表和关系.由于我不熟悉MySQL(或根本就没有数据库),我冒着错过一些特殊情况的风险.此外,它可能是某种矫枉过正,因为一旦配置了架构,就可以假设它是固定的.

有没有人对选择哪种替代方案以及如何解决随之而来的问题有相同的建议?或者还有另一个 - 更好 - 替代我没想到的?任何建议将不胜感激!如果不清楚,请告诉我.

编辑:由于对用例有一些问题,我将详细说明:

正如我所说,我正在为FIM开发管理代理.FIM提供了一个所谓的可扩展连接管理代理,它基本上是一个实现一些接口的单一类.(有关示例实现,请参阅此technet指南).

由于我想开发一个用于管理MySQL数据库中的身份的通用代理,我不知道编译时的数据库布局.当最终用户想要使用管理代理时,他需要决定他想要管理的身份的哪些属性.所以我需要给用户一些配置管理代理的方法.我的主要问题是,如何设计类以保存此配置.

让我们看一个简单的例子:

假设您想要管理员工身份.为了简单起见,我们有三个属性:

  • 名字
  • 部门

在这个示例中,它可能只是一个包含4列的单个表(属性加上一个id).但它也可能是更好的设计,它使用两个表,一个用户表和一个部门表,使用1:1关系来定义用户部门.

FIM要求我在一个对象中合并这些属性.它提供了一个CSEntryChange具有AttributeChanges集合成员的类.然后我会创建一些实例AttributeChange(基本上包含属性名称和它的值)并将它们添加到集合中.因此,用户可编辑的配置必须告诉管理代理如何从db获取具有所有已定义属性的用户以及如何在该数据库中创建和修改用户.

理想情况下,我有一些"MySQLSchema"类(由用户预先配置),可以返回一个List<CSEntryChange>(我实际上不会CSEntryChange为了解耦而使用该类,但是你应该得到点)包含db中的所有用户(分页可能是一个要求,但我可以稍后解决).此外,我希望能够传递它,CSEntryChange这将导致更新相应的数据库条目(或者如果尚未存在则创建).

我希望这清楚一点:)

c# mysql

5
推荐指数
1
解决办法
1124
查看次数

MSAL - PublicClientApplication - GetAccountsAsync() 不返回任何帐户

我正在开发一个小 WPF 应用程序,该应用程序应该从 MS Graph API 查询一些数据。我想使用 SSO,这样用户就不必单独登录应用程序。

该应用程序在加入 Azure AD 的设备上运行。该用户是AADC同步的AD用户。AAD 租户与 ADFS 联合。用户使用 Hello for Business (PIN) 或密码进行身份验证。由此产生的问题是相同的。

我可以确认用户通过以下方式获得了 PRT:

dsregcmd /status

AzureAdPrt: YES
Run Code Online (Sandbox Code Playgroud)

如果重要的话:Azure AD 中的应用程序注册设置为“将应用程序视为公共客户端”。并配置以下重定向 URI:

根据我找到的示例,我使用以下代码来尝试获取访问令牌。但是该GetAccountsAsync()方法不会返回任何用户,也不会引发任何错误或异常。

谁能告诉我,我在这里缺少什么?

任何帮助将非常感激!

PS:当我使用“交互式身份验证”尝试此操作时,效果很好。

public GraphAuthProvider(string appId, string tenantId, string[] scopes)
{
    _scopes = scopes;

    try
    {
        _msalClient = PublicClientApplicationBuilder
                .Create(appId)
                .WithAuthority(AadAuthorityAudience.AzureAdMyOrg, true)
                .WithTenantId(tenantId)
                .Build();
    }
    catch (Exception exception)
    {
        _log.Error(exception.Message);
        _log.Error(exception.StackTrace);
        throw;
    }
}

public async Task<string> GetAccessToken()
{
    _log.Info("Starting 'GetAccessToken'...");
    var accounts …
Run Code Online (Sandbox Code Playgroud)

c# single-sign-on azure-active-directory azure-ad-graph-api azure-ad-msal

5
推荐指数
1
解决办法
2万
查看次数

将LineGeometry与EllipseGeometry结合(代码中,不是XAML)

我正在尝试使用WPF创建自定义形状.对于初学者我只是想创建一个简单的线,每端都有一个圆圈(我知道有LineCaps,但这不是我想要的).

我已经研究了一些教程和最简单的方法,似乎使用了一个CombinedGeometry.但是我无法让它正常工作.这是我创建几何对象的代码:

protected override Geometry DefiningGeometry
    {
        get
        {
            Point ellipseCenter1 = new Point(X1 - this.CapDiameter / 2, Y1 - this.CapDiameter / 2);
            Point ellipseCenter2 = new Point(X2 - this.CapDiameter / 2, Y2 - this.CapDiameter / 2);
            var ellipse1 = new EllipseGeometry(ellipseCenter1, CapDiameter, CapDiameter);
            var ellipse2 = new EllipseGeometry(ellipseCenter2, CapDiameter, CapDiameter);
            var line = new LineGeometry(this.StartPoint, this.EndPoint);

            var combined1 = new CombinedGeometry(GeometryCombineMode.Union, ellipse1, line);
            var combined2 = new CombinedGeometry(GeometryCombineMode.Union, combined1, ellipse2);

            // Freeze the geometry for performance benefits …
Run Code Online (Sandbox Code Playgroud)

c# wpf geometry shape

4
推荐指数
1
解决办法
2488
查看次数

参数列表前的“new”关键字在打字稿箭头函数中是什么意思?

就此而言,我对 TypeScript 甚至 JavaScript 还很陌生。我一直在尝试围绕 Microsoft 的一个示例,介绍如何将 AzureAD 身份验证集成到 React 应用程序中。该示例使用 HOC 为组件提供身份验证。HOC 的声明如下所示:

function withAuthProvider<T extends React.Component<AuthComponentProps>>(
    WrappedComponent: new (props: AuthComponentProps, context?: any) => T
): React.ComponentClass {...}
Run Code Online (Sandbox Code Playgroud)

其中大部分或多或少是清楚的。令我困惑的是WrappedComponent. 具体来说,我不明白new关键字在该上下文中的作用。

谁能帮我吗?

javascript typescript reactjs higher-order-components

4
推荐指数
1
解决办法
64
查看次数

Xcode 4 - Interface Builder中是否存在"在画布中显示"的内容?

我有一个相当复杂的xib,有很多元素.其中一些是彼此重叠的.如果我想移动一个元素,例如使用箭头键我需要在画布中选择它,但如果该元素在另一个"下",我就无法点击它.所以我正在寻找"文件大纲中揭示"的"对立面".在Xcode 3中有一个快捷方式,遗憾的是我忘了它,无法在任何地方找到它.也许这仍然适用于Xcode 4 ......

有谁知道那条捷径?甚至是"点击覆盖元素"的更好方法?

xcode interface-builder xcode4

2
推荐指数
1
解决办法
788
查看次数

从assets文件夹中检索图像路径

我有问题从资产文件夹中检索图像路径.

我在assets文件夹中有一个图像文件夹.在文件夹中我有三个不同的文件夹.

这是我使用的代码:

String IntroImage1= "" + languageSelected + "/" + Intro1ImagePath + ".png" ;


try{
    AssetManager mngr =getAssets();
    InputStream BulletImgInput = mngr.open(IntroImage1);
    //InputStream BulletImgInput = mngr.open("image/Malay/bullet.png");

    Bitmap bitmapBullet = BitmapFactory.decodeStream(BulletImgInput);
    BulletImage.setImageBitmap(bitmapBullet);
    }catch(final IOException e){
    e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我不能显示图像?因为我试图通过这段代码检索它:

InputStream BulletImgInput = mngr.open("image/Malay/bullet.png");
Run Code Online (Sandbox Code Playgroud)

它确实检索了文件,但是我在mngr.open中替换的字符串没有显示出来.

真的需要你们帮忙.谢谢.

android assets path

1
推荐指数
1
解决办法
3万
查看次数