如果您的Android应用使用设备的相机拍照,然后调整它的大小(这是很常见的,以减少上传大小),你可能没有意识到,这个调整操作条的EXIF元数据.
这可能会导致问题,尤其是当相关设备依赖"方向"标签正确显示图像时.
不同的Android设备以不同的方式处理相机/图像旋转 - 我信赖的'Nexus One似乎总是在捕获后立即旋转图像,因此文件的本机内容在查看时始终是"直立的".然而,其他设备(特别是我测试中的三星手机)不会旋转图像文件的内容 - 而是设置exif'Orientation'标签.无论何时稍后显示图像,相关图像代码都应检测到方向"标签"的存在并适当地旋转图像.但是如果您对图像进行了任何位图处理并将其保存到新文件中,那么所有exif数据都将丢失.
除了Orientation数据之外,您还可能会丢失其他有价值的元数据,例如品牌/型号等.
这使我困惑了几个星期(图像在电话库中显示时显示正常,但随后到达我的服务器时方向错误且没有明显的元数据).我在这里添加这个自我提问来帮助别人.这篇博客文章非常有用:
http://vikaskanani.wordpress.com/2011/07/17/android-re-size-image-without-loosing-exif-information/
已解决:请参阅下面的更新#2以了解此问题的"解决方案".
~~~~~~~
在s3中,我有一些log*.gz文件存储在嵌套目录结构中,如:
s3://($BUCKET)/y=2012/m=11/d=09/H=10/
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用多级分区规范将这些加载到Hlastic on Elastic Map Reduce(EMR)上,例如:
create external table logs (content string)
partitioned by (y string, m string, d string, h string)
location 's3://($BUCKET)';
Run Code Online (Sandbox Code Playgroud)
创建表工作.然后我尝试恢复所有现有分区:
alter table logs recover partitions;
Run Code Online (Sandbox Code Playgroud)
这似乎工作,它确实钻取我的s3结构并添加所有不同级别的目录:
hive> show partitions logs;
OK
y=2012/m=11/d=06/h=08
y=2012/m=11/d=06/h=09
y=2012/m=11/d=06/h=10
y=2012/m=11/d=06/h=11
y=2012/m=11/d=06/h=12
y=2012/m=11/d=06/h=13
y=2012/m=11/d=06/h=14
y=2012/m=11/d=06/h=15
y=2012/m=11/d=06/h=16
...
Run Code Online (Sandbox Code Playgroud)
因此,Hive似乎可以成功查看和解释我的文件布局.但是,没有实际数据被加载.如果我尝试做一个简单的计数或选择*,我什么都得不到:
hive> select count(*) from logs;
...
OK
0
hive> select * from logs limit 10;
OK
hive> select * from logs where y = '2012' and m = '11' …Run Code Online (Sandbox Code Playgroud) hadoop hive amazon-s3 amazon-web-services elastic-map-reduce
我有一个客户的压缩Hadoop SequenceFile,我想检查.我目前没有完整的架构信息(我正在单独处理).
但是在过渡时期(以及通用解决方案的希望),我有哪些检查文件的选择?
我发现了一个工具forqlift:http://www.exmachinatech.net/01/forqlift/
并且已经在文件上尝试了"forqlift list".它抱怨它无法加载包含的自定义子类Writables的类.所以我需要追踪这些实现.
但是在此期间还有其他选择吗?我知道很可能我无法提取数据,但是有一些工具可以扫描多少关键值和什么类型的关键值?
如何动态更新ActionBar MenuItem的图标以显示带有数字的"红色徽章"?(概念上类似于"未读消息计数")
我在我的Android应用程序中使用ActionBarSherlock,目标是API级别10+.我的应用程序用于移动数据捕获,有时用户无法立即提交新数据,但必须在手机上本地保存(例如,当连接性较差时).
每当手机本地存储"未提交"项目时,我想向用户显示一个菜单项(在操作栏中),以便他们可以点击进入UnsubmittedItems活动并手动触发上传.
理想情况下,此菜单项将包含未提交项目数量的图形表示(类似于电子邮件或短信应用程序如何显示未读邮件的数量作为徽章).目前,我只是在做:
unsubmittedMenuItem.setTitle( Integer.toString(numUnsubmitted) );
Run Code Online (Sandbox Code Playgroud)
这是有效的,但有两个问题:我更喜欢使用Icon并将Title保持为易于理解的东西("未提交"),而且,我也希望在这里有一些自定义布局或设计,例如红圈数字背后的背景.
关于如何实现这一点的想法?到目前为止我的研究提出了两种可能
这些在我将文本渲染为位图的意义上是相似的(像#1一样离线或像#2一样在飞行中)但是如果可能的话,利用ActionBar的"原生"文本渲染会很棒像在TextView中一样在它后面插入一个红色圆圈.
有没有办法为图标drawable设置自定义布局?(不是完整的actionLayout,仅用于图标?)
我的Android应用程序使用AWS Java SDK将用户照片上传到S3.
每当用户的手机时钟"歪斜"时,这都会导致所有传输失败.这是S3的一个有据可查的方面:
http://aws.amazon.com/articles/1109?_encoding=UTF8&jiveRedirect=1#04
上游S3服务似乎非常清楚地报告了这个错误:
HTTP状态码:403禁止
错误代码:RequestTimeToo-Skewed
描述:请求时间和服务器时间之间的差异太大.
然而,当使用Java SDK时,似乎信息性的403代码丢失了...而且我只有一个不透明的"TransferState.Failed"(如果互联网连接丢失,则偶然会出现相同的错误,如果它的次数出来等...).
据我所知,从文档中可以看出:
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/index.html http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/transfer/TransferProgress .html http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/transfer/Transfer.TransferState.html http://docs.aws.amazon.com/AWSJavaSDK/latest /javadoc/com/amazonaws/services/s3/transfer/Upload.html
没有办法获得有关传输失败的额外"RequestTimeToo-Skewed"元数据.
我错过了吗?当使用亚马逊的Java SDK进行S3传输失败时,有没有办法获得其他错误信息?
更新#1: 一位意见提供者强调我应该澄清两点:
更新#2: 衷心感谢Jason(AWS SDK团队)在这里停下来帮助我.实际上,如果使用某些方法,重要信息可作为AmazonS3Exception的属性使用.文档最初让我困惑,我认为需要一个手动Thread.sleep()循环来轮询状态(因此我无法利用waitForCompletion或waitForException),但如果你在PutObjectRequest上使用ProgressListener,你可以得到完整的进度回调和AmazonS3Exception的错误保真度.