小编Mik*_*ass的帖子

Android图像调整大小和保留EXIF数据(方向,旋转等)

如果您的Android应用使用设备的相机拍照,然后调整它的大小(这是很常见的,以减少上传大小),你可能没有意识到,这个调整操作的EXIF元数据.

这可能会导致问题,尤其是当相关设备依赖"方向"标签正确显示图像时.

不同的Android设备以不同的方式处理相机/图像旋转 - 我信赖的'Nexus One似乎总是在捕获后立即旋转图像,因此文件的本机内容在查看时始终是"直立的".然而,其他设备(特别是我测试中的三星手机)不会旋转图像文件的内容 - 而是设置exif'Orientation'标签.无论何时稍后显示图像,相关图像代码都应检测到方向"标签"的存在并适当地旋转图像.但是如果您对图像进行了任何位图处理并将其保存到新文件中,那么所有exif数据都将丢失.

除了Orientation数据之外,您还可能会丢失其他有价值的元数据,例如品牌/型号等.

这使我困惑了几个星期(图像在电话库中显示时显示正常,但随后到达我的服务器时方向错误且没有明显的元数据).我在这里添加这个自我提问来帮助别人.这篇博客文章非常有用:

http://vikaskanani.wordpress.com/2011/07/17/android-re-size-image-without-loosing-exif-information/

android exif image android-camera

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

使用Hive,S3,EMR和Recover Partitions加载数据

已解决:请参阅下面的更新#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

11
推荐指数
1
解决办法
9048
查看次数

如何检查缺少完整架构信息的Hadoop SequenceFile?

我有一个客户的压缩Hadoop SequenceFile,我想检查.我目前没有完整的架构信息(我正在单独处理).

但是在过渡时期(以及通用解决方案的希望),我有哪些检查文件的选择?

我发现了一个工具forqlift:http://www.exmachinatech.net/01/forqlift/

并且已经在文件上尝试了"forqlift list".它抱怨它无法加载包含的自定义子类Writables的类.所以我需要追踪这些实现.

但是在此期间还有其他选择吗?我知道很可能我无法提取数据,但是有一些工具可以扫描多少关键值和什么类型的关键值?

apache hadoop

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

ActionBar菜单项的动态可绘制图标?(Android,ActionBarSherlock)

如何动态更新ActionBar MenuItem的图标以显示带有数字的"红色徽章"?(概念上类似于"未读消息计数")

我在我的Android应用程序中使用ActionBarSherlock,目标是API级别10+.我的应用程序用于移动数据捕获,有时用户无法立即提交新数据,但必须在手机上本地保存(例如,当连接性较差时).

每当手机本地存储"未提交"项目时,我想向用户显示一个菜单项(在操作栏中),以便他们可以点击进入UnsubmittedItems活动并手动触发上传.

理想情况下,此菜单项将包含未提交项目数量的图形表示(类似于电子邮件或短信应用程序如何显示未读邮件的数量作为徽章).目前,我只是在做:

unsubmittedMenuItem.setTitle( Integer.toString(numUnsubmitted) );
Run Code Online (Sandbox Code Playgroud)

这是有效的,但有两个问题:我更喜欢使用Icon并将Title保持为易于理解的东西("未提交"),而且,我也希望在这里有一些自定义布局或设计,例如红圈数字背后的背景.

关于如何实现这一点的想法?到目前为止我的研究提出了两种可能

  1. 使用为某些数字范围(例如1,2,3 ... 10+)预先创建的级别列表drawable,然后使用unsubmittedMenuItem.getIcon().setLevel(numUnsubmitted)
  2. 使用Bitmap和Canvas API完全动态地构建整个位图

这些在我将文本渲染为位图的意义上是相似的(像#1一样离线或像#2一样在飞行中)但是如果可能的话,利用ActionBar的"原生"文本渲染会很棒像在TextView中一样在它后面插入一个红色圆圈.

有没有办法为图标drawable设置自定义布局?(不是完整的actionLayout,仅用于图标?)

android actionbarsherlock android-actionbar

7
推荐指数
1
解决办法
4253
查看次数

AWS S3 Java SDK:以编程方式检测时间/时钟偏差?

我的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: 一位意见提供者强调我应该澄清两点:

  • 我实际上正在使用适用于Android的AWS SDK(它看起来与Java SDK非常相似,但仍然是不同的)
  • 我正在使用TransferManager类来执行上传.显然,这是一个包含较低级别AmazonS3Client的高级类......而这个较低级别的类应该公开我需要的错误报告,但我仍在调查TransferManager和AmazonS3Client之间所涉及的确切权衡.据我所知,没有办法通过(同步)AmazonS3Client.putObjectRequest获取进度信息,这对我来说是一个阻碍...

更新#2: 衷心感谢Jason(AWS SDK团队)在这里停下来帮助我.实际上,如果使用某些方法,重要信息可作为AmazonS3Exception的属性使用.文档最初让我困惑,我认为需要一个手动Thread.sleep()循环来轮询状态(因此我无法利用waitForCompletion或waitForException),但如果你在PutObjectRequest上使用ProgressListener,你可以得到完整的进度回调和AmazonS3Exception的错误保真度.

android amazon-s3 amazon-web-services

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