如果您的Android应用程序使用设备相机拍摄照片然后resize(这对减小上传大小非常常见),但是您可能没有意识到此大小调整操作会剥离 exif元数据。 这可能会导致问题,特别是如果有问题的设备依靠“方向”标签来正确显示图像。 不同的Android设备以不同的方式处理相机/图像旋转 – 我可信的“Nexus One”似乎总是在拍摄后立即旋转图像,所以文件的原始内容在观看时总是“直立的”。 然而,其他设备(尤其是我testing的三星手机),不要旋转图像文件的内容 – 而是设置exif“方向”标签。 每当稍后显示图像时,相关的图像代码应检测到方向“标签”的存在并适当地旋转图像。 但是,如果您对图像进行了任何位图处理并将其保存到新文件,则所有exif数据都将丢失。 除了方向数据,您还可能会失去其他有价值的元数据,如make / model等。 这使我困惑了几个星期(图像显示在手机画廊,直到后来到我的服务器方向不正确,没有明显的元数据直立。 我在这里添加这个自问题来帮助别人。 这篇博文很有帮助: Android re-size image without loosing EXIF information
我想从使用php的图片中提取GPS EXIF标签。 我使用exif_read_data()返回所有标签+数据的数组: GPS.GPSLatitudeRef: N GPS.GPSLatitude:Array ( [0] => 46/1 [1] => 5403/100 [2] => 0/1 ) GPS.GPSLongitudeRef: E GPS.GPSLongitude:Array ( [0] => 7/1 [1] => 880/100 [2] => 0/1 ) GPS.GPSAltitudeRef: GPS.GPSAltitude: 634/1 我不知道如何解释46/1 5403/100和0/1? 46可能是46°,但其余的尤其是0/1呢? angle/1 5403/100 0/1 这个结构是什么? 如何将它们转换成“标准”(如来自wikipedia的46°56'48“N 7°26'39”E)? 我想通过坐标到谷歌地图API来显示在地图上的图片位置!
佳能数码单反相机似乎以横向保存照片,并使用exif::orientation进行旋转。 问题: imagemagick如何使用Exif方向数据将图像重新保存到预期的方向,使其不再需要Exif数据以正确的方向显示?
我想知道PNG是否包含如下的数据? 我所做的是将JPG文件转换为PNG格式,我期待检索我在JPG上的相同信息,如下所示: 目前使用这个as3库来读取数据。 IDF0 — IDF @ [134 – 248](9项) 方向(SHORT):1 XResolution(RATIONAL):72/1 Y分辨率(RATIONAL):72/1 ResolutionUnit(SHORT):2 软件(ASCIIx16):QuickTime 7.6.6 DateTime(ASCIIx20):2011:10:02 22:43:37 HostComputer(ASCIIx16):Mac OS X 10.6.8 Exif IFD(LONG):8 34853 GPS IFD(长):248 EXIF IDF — IDF @ [8 – 134](10项) ExifVersion(UNDEFINEDx4):0220 DateTimeOrigina(ASCIIx20):2011:04:14 17:22:01 UserComment(UNDEFINEDx63):ASCII FlashpixVersion(UNDEFINEDx4):0100 ColorSpace(SHORT):1 PixelXDimension(LONG):1022 PixelYDimension(LONG):486 未知(ASCIIx13):图像标签 – 大声笑 SceneCaptureType(SHORT):0 GPS IDF — IDF @ [248 – 338](7项) […]
我想从JPEG文件中删除EXIF信息(包括缩略图,元数据,相机信息…一切!),但我不想重新压缩它,因为重新压缩JPEG会降低质量,并且通常会增加文件大小。 我正在寻找一个Unix / Linux解决scheme,如果使用命令行,甚至更好。 如果可能的话,使用ImageMagick(转换工具)。 如果这是不可能的,一个小的Python,Perl,PHP(或者Linux上的其他通用语言)脚本就可以。 有一个类似的问题,但与.NET有关 。
可能重复的 使用PHP将jpg图像转换为gif,png和bmp格式 我有一个PHP表单,允许图像上传和检查exif_imagetype(); 确保图像有效。 但是,我希望所有的格式,PNG,JPG,JPEG和GIF,最终被提交PNG。 我怎么能这样做?
在我写的iOS应用程序中,我处理的是PNG,因为我处理Alpha通道。 出于某种原因,我可以将PNG加载到我的imageView中,但是,当将图像从我的应用程序中复制(粘贴到PasteBoard上)或将图像保存到相机胶卷上时,图像旋转90度。 我在这里到处search,我学到的东西之一是,如果我使用JPEG,我不会有这个问题(听起来),由于EXIF的信息。 我的应用程序具有完整的复制/粘贴function,这里是踢球者(我会逐步写下来,以便更容易遵循): 去我的相机胶卷,复制一个图像 进入我的应用程序,然后按“粘贴”,图像粘贴就好了,我可以整天这样做 点击我实现的复制function,然后点击“粘贴”,图像粘贴但旋转。 我100%确定我的复制和粘贴代码是不是这里有什么错,因为如果我回到上面的第2步,并点击“保存”,照片保存到我的图书馆,但它是旋转90度! 更奇怪的是,从网上下载的图片似乎可以正常工作,但是用手动手动拍摄的图片非常受欢迎。 有些是有效的,有些则不是。 有没有人有这个想法? 任何可能的解决办法,我可以使用? 我对代码的相当有信心,它对我的图像有75%的作用。 我可以根据要求发布代码。
如果方向closures,我正在使用以下代码来旋转上传的jpeg图像。 我只有从iPhone和Android上传的图像有问题。 if(move_uploaded_file($_FILES['photo']['tmp_name'], $upload_path . $newfilename)){ chmod($upload_path . $newfilename, 0755); $exif = exif_read_data($upload_path . $newfilename); $ort = $exif['IFD0']['Orientation']; switch($ort) { case 3: // 180 rotate left $image->imagerotate($upload_path . $newfilename, 180, -1); break; case 6: // 90 rotate right $image->imagerotate($upload_path . $newfilename, -90, -1); break; case 8: // 90 rotate left $image->imagerotate($upload_path . $newfilename, 90, -1); […]
在我们的网站上,我们从各种来源上传了大量的照片。 为了保持文件大小,我们使用mogrify从源文件中去除所有的exif数据 : mogrify -strip image.jpg 我们希望能够做的是插入一些基本的exif数据(版权Initrode等)回到这个新的“干净的”图像,但我似乎无法find任何文件,将实现这一目标。 有没有人有这样的经验? 如果不能通过imagemagick完成,基于PHP的解决scheme将是下一个最好的事情! 谢谢。
使用ACTION_IMAGE_CAPTURE活动时遇到方向问题。 我已经使用了TAG_ORIENTATION以便相应地旋转图片。 但是现在我们发现在一些较新的设备上这是行不通的。 事实上,所有方向都返回1。 以下是我们观察过的设备列表; 三星Infuse 4G(2.3.3) 三星Galaxy SII X(2.3.5) 索尼Xperia Arc(2.3.3) 有趣的是,一旦这个图像是图库,它显示正确,如果我select它, TAG_ORIENTATION正确填充。 所以不知何故OS正确填充这些信息,但没有在ActivityResult 。 什么是最可靠的方法来确定方向? 有人在另一个问题上build议比较高度和宽度,但是当得到这些时,他们根据方向(另一个谜)适当切换, 编辑:这似乎可以连接到另一个操作系统复制在图库中拍摄的图像(它只能保存在我们指定的URL中的图像),这个图像在画廊有ORIENTATION信息在指定位置的那个没有。 这是错误; http://code.google.com/p/android/issues/detail?id=19268 编辑2:我提出了一个新的Android与Android的错误。 我很确定这是一个涉及上述错误的操作系统错误。 http://code.google.com/p/android/issues/detail?id=22822