基本任务:更新与UIImage关联的元数据的EXIF方向属性.我的问题是我不知道所有EXIF信息中的orientation属性.
复杂的背景:我正在改变返回的图像的方向,imagePickerController:didFinishPickingMediaWithInfo:所以我想我还需要在保存图像之前更新metaData writeImageToSavedPhotosAlbum:(CGImageRef)imageRef metadata:(NSDictionary *)metadata.
换句话说,除非我更改它,否则metaData将包含旧/初始方向,因此是错误的.我改变方向的原因是因为它在我运行Core Image面部检测程序时不停地绊倒我.使用前置摄像头在人像模式下使用iPhone(设备)拍照时,方向为UIImageOrientationRight(3).如果我重写图像使方向为UIImageOrientationUp(0),我会得到良好的面部检测结果.作为参考,下面是重写图像的例程.
整个相机定位的事情我觉得非常混乱,我似乎正在深入挖掘所有这一切的代码洞.我看了帖子(这里,这里和这里.根据这篇文章(/sf/answers/264683471/):
"相机实际上是风景原生的,所以当你拍摄风景照片时,你可以向上或向下拍摄,当你拍摄照片时,你可以向左或向右拍摄(取决于你握住设备的方式)."
......这完全令人困惑.如果以上情况属实,我认为我应该使用前置摄像头UIImageOrientationLeftMirrored或UIImageOrientationRightMirrored使用前置摄像头.而这一切都无法解释为什么CIDetector选择器返回的原始图像失败了.
我正在接近这个屁股,但我似乎无法面向...
-(UIImage *)normalizedImage:(UIImage *) thisImage
{
if (thisImage.imageOrientation == UIImageOrientationUp) return thisImage;
UIGraphicsBeginImageContextWithOptions(thisImage.size, NO, thisImage.scale);
[thisImage drawInRect:(CGRect){0, 0, thisImage.size}];
UIImage *normalizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return normalizedImage;
}
Run Code Online (Sandbox Code Playgroud) 这个问题不是"我怎么做",而是关于Objective-C中某些Class属性的"为什么会这样".
我理解下面的两个例子是不允许的,并导致错误("表达式不可分配"):
self.myUIView.frame.origin.x = 50;
self.myUIView.frame.origin = CGPointMake(50,50);
Run Code Online (Sandbox Code Playgroud)
并且正确的方法是创建一个新的CGRect,设置所需的值然后分配它:
CGRect rect = self.myUIView.frame;
rect.origin = CGPointMake(50, 50);
self.myUIView.frame = rect;
Run Code Online (Sandbox Code Playgroud)
我想明白为什么会这样.
CGRect是一个包含两个结构的结构.限制是否与分配结构有关,以防止可能溢出该内存的赋值?或者更多的是关于公共和私人财产的公约?
我意识到这似乎是一个小问题/基本问题,但我认为清除这些基本问题的泥泞/不良理解很重要.
新手问题:有人能告诉我如何理解/解释调试器var窗格中显示的内容吗?
例如:我将NSDictionary作为方法参数传递.我设置了一个断点,所以我可以检查字典中的值.下面的图像(如果它通过..)显示调试器中此var的展开视图.它正确地报告它包含3个名称/值对,但是当我展开所有部分时,我根本无法找到这些存储的位置.
我是否必须创建这些名称/值对的本地变量才能在我想检查时查看它们?我知道我可以使用NSLog或printf,但有时我只是想快速浏览一下.

在Xcode 4.2中,当我创建一个新分支并打开它时,Master中存在的iOS方案将丢失.相反,我有一个'Mac 64 bit'的方案.
这已连续几次发生,我通过创建一个新方案来处理它,删除'Mac 64 bit',然后将新方案重命名为原始方案.我宁愿修复任何错误的东西.我做错了什么 - 有些偏好在哪里?
版本:
该dmg文件运行良好。但是当我尝试通过 Transporter 进行验证时,出现以下错误。
错误

构建配置
"build": {
"appId": "<APP_ID>",
"productName": "<PRODUCT_NAME",
"copyright": "<COMPANY_NAME>",
"afterSign": "scripts/notarize.js",
"directories": {
"buildResources": "resources",
"output": "release"
},
"mac": {
"hardenedRuntime": true,
"gatekeeperAssess": false,
"category": "public.app-category.developer-tools",
"target": ["mas"],
"icon": "resources/icon.icns",
"identity": "<IDENTITY>",
"provisioningProfile": "build/mac.provisionprofile",
"type": "distribution",
"electronLanguages": ["en"],
"entitlements": "build/mac.plist",
"entitlementsInherit": "build/mac.plist"
},
"mas": {
"hardenedRuntime": false,
"provisioningProfile": "build/mas.provisionprofile",
"type": "distribution",
"electronLanguages": ["en"],
"entitlements": "build/entitlements.mas.plist",
"entitlementsInherit": "build/entitlements.mas.inherit.plist"
},
"dmg": {
"sign": false,
"contents": [
{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试删除或覆盖由电子制作的通知签名。
我正在尝试是否覆盖签名 electro.app.Electron 还是完全删除它,因为我知道我已经在测试模式(npm run start)下对其进行了测试,并且在打包时.exe
我也注意到我删除了图标,签名会出现问题,但是没有一个就很不愉快了。
我当前的通知代码如下:
function showNotification() {
const notification = new Notification("new message", {
body: "app launched",
icon: __dirname + '/icon.ico',
tag: 'soManyNotification',
hasReply: true
})
}
console.log(Notification.permission)
if (Notification.permission === "granted") {
showNotification()
//alert('we have permission');
} else if (Notification.permission === "denied") {
Notification.requestPermission()
};Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激^^
我一直试图在iOS 5上一个renderCallback记录从RemoteIO单元直接AAC在iPad 2,我已经看到了矛盾的信息说这是不可能的-这是可能的(在评论点击这里).我想要这样做的原因是因为录制到PCM需要如此多的磁盘空间来记录任何长度 - 即使它稍后被转换为AAC.
我准备放弃了.我已经通过谷歌刮,所以,核心音频书和苹果的核心音频邮件列表和论坛,并已经到了,我没有得到任何错误的点-和我记录的东西到磁盘,但生成的文件无法播放.模拟器和设备都是这种情况.
所以...如果有人有这方面的经验,我真的很感激在正确的方向上轻推.设置是RemoteIO正在播放AUSamplers的输出并且工作正常.
以下是我在下面的代码中所做的事情
指定AudioStreamBasicDescriptionremoteIO设备的格式kAudioFormatLinearPCM
ExtAudioFileRef
通过从RemoteIO单元获取指定客户端格式,创建并指定目标格式
为RemoteID单元指定renderCallback
在renderCallback中,在kAudioUnitRenderAction_PostRender阶段中写入数据
正如我所说,我没有收到任何错误,并且生成的音频文件大小显示正在写入某些内容,但该文件无法播放.也许我的格式搞砸了?
无论如何,这是我在一个瓶子里的信息和/或"Be Here Dragons"的旗帜,任何人都在冒着Core-Audio的黑暗水域.
//尝试播放文件时得到的不愉快的消息:

//部分remoteIO设置
// Enable IO for recording
UInt32 flag = 1;
result = AudioUnitSetProperty(ioUnit,
kAudioOutputUnitProperty_EnableIO,
kAudioUnitScope_Input,
kInputBus, // == 1
&flag,
sizeof(flag));
if (noErr != result) {[self printErrorMessage: @"Enable IO for recording" withStatus: result]; return;}
// Describe format - - - - - - - - - -
size_t bytesPerSample = sizeof (AudioUnitSampleType);
AudioStreamBasicDescription …Run Code Online (Sandbox Code Playgroud) 我正在尝试查找设置或大小策略,以便我的QToolBox实例中的每个页面仅占用其内容所需的空间.我已经尝试了我在实例和每个页面的属性中看到的所有内容.
我是否误解了QToolBoxwidget 的功能或者错过了正确的设置?
我想要的是与Qt Creator中的手风琴折叠型小部件类似的东西:

我似乎无法让这个"排序"页面只占用显示按钮和字段所需的大小.


有没有人有使用ffmpegAIR的经验?我已经能够加载和播放视频,但我无法ffmpeg通过标准输入与控制流进行通信- 寻找,暂停等.
显然我需要使用过滤器与正在运行的实例进行通信,ffmpeg但我正在努力学习语法(否则我会被误导).
基于从网上收集的一些东西,我正在尝试这个,但它没有做任何事情:
var cmd:String = "-f lavfi -i movie=filename='" + videoPath + "':streams=0+1[out0][out1] -c:a copy -c:v copy -f flv -"
ffmpegProcess.standardInput.writeUTF(cmd + "\n");
Run Code Online (Sandbox Code Playgroud)
任何提示都是最受欢迎的!
加载代码(在其他地方完成NetStream的设置等).这有效.
ffmpegArgs = new Vector.<String>();
ffmpegArgs.push("-re", "-i",videoPath,"-c:a", "copy", "-c:v", "copy","-f", "flv", "-");
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = ffmpegFile;
nativeProcessStartupInfo.arguments = ffmpegArgs;
ffmpegProcess.start(nativeProcessStartupInfo);
Run Code Online (Sandbox Code Playgroud) ios ×4
c++ ×2
electron ×2
qt ×2
xcode ×2
apache-flex ×1
code-signing ×1
core-audio ×1
ffmpeg ×1
ios5 ×1
javascript ×1
macos ×1
node.js ×1
nsdictionary ×1
objective-c ×1
qtwidgets ×1
video ×1
xcode4 ×1
xcode4.2 ×1