WordPress附件函数wp_get_attachment_metadata简码获取照片EXIF信息
自动获取照片的EXIF信息,很多大型的摄影论坛都有这个功能,对于摄影爱好者来说是一个很实用的功能。萨龙龙开发的Deephoto主题和Neatimg主题中就添加了些功能,通过简码很方便的获取了照片的EXIF信息。
[infobox]首先我们了解下什么是EXIF:[/infobox]Exif是一种图像文件格式,它的数据存储与JPEG格式是完全相同的。实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码、拍摄时录制的声音以及GPS全球定位系统数据、缩略图等。你可以利用任何可以查看JPEG文件的看图软件浏览Exif格式的照片,但并不是所有的图形程序都能处理Exif信息。
[successbox]Wordpress附件函数wp_get_attachment_metadata[/successbox]本文是使用Wordpress附件函数wp_get_attachment_metadata来获取照片的EXIF信息,通过附件的ID来读取EXIF信息,所以要获取照片的EXIF信息,是必须把照片上传到媒体中,将EXIF信息存储在数据库中,这样函数才能读取。在导出照片时需要注意,很多软件默认会清除一些EXIF信息,选择保留所有EXIF信息(元数据)。
国内暂时没有看到其它主题有获取照片EXIF信息功能,国外也很罕见,有也是通过Exifography插件来实现,但获取的EXIF信息并不全,很多也获取不了,因为Exifography插件就是通过wp_get_attachment_metadata来获取,所以下面的代码也同样是获取不全照片的EXIF。
以下代码添加到functions.php文件中(),在编辑文章时使用简码:
- function sl_exif($atts, $content = null) {
- extract(shortcode_atts(array(
- "id" => ''
- ), $atts));
- $imgmeta = wp_get_attachment_metadata($id);
-
- $exposure_bias_parts = explode("/", $imgmeta['image_meta']['exposure_bias']);
- if ($exposure_bias_parts[0] == "0")
- $exif = '';
- else {
- $float = intval($exposure_bias_parts[0]) / intval($exposure_bias_parts[1]);
- if (is_int($float))
- $exif = sprintf("%+d%s", $float, __('EV','exifography'));
- elseif ($float <= -1 || $float >= 1)
- $exif = sprintf("%+.1f%s", $float, __('EV','exifography'));
- else
- $exif = sprintf("%+d%s%d%s", intval($exposure_bias_parts[0]), "/", intval($exposure_bias_parts[1]), __('EV','exifography'));
- }
-
- if (isset($imgmeta['image_meta']['shutter_speed'])) {
- if ((1 / $imgmeta['image_meta']['shutter_speed']) > 1) {
- $speed = "1/";
- if ((number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1)) == 1.3
- or number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1) == 1.5
- or number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1) == 1.6
- or number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1) == 2.5) {
- $speed .= number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1, '.', '') . "s";
- }
- else
- $speed .= number_format((1 / $imgmeta['image_meta']['shutter_speed']), 0, '.', '') . "s";
- }
- else
- $speed = $imgmeta['image_meta']['shutter_speed']."s";
- }
- $shortcode.= '<ul>';
- $shortcode.= '<li class="image-meta"><span>'.__( '型号:', 'salong' ).'</span>'.$imgmeta['image_meta']['camera'].'</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( '镜头:', 'salong' ).'</span>'.$imgmeta['image_meta']['lens'].'</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( '光圈:', 'salong' ).'</span>f/'.$imgmeta['image_meta']['aperture'].'</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( '快门:', 'salong' ).'</span>'.$speed.'</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( '焦距:', 'salong' ).'</span>'.$imgmeta['image_meta']['focal_length'].'mm</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( 'ISO:', 'salong' ).'</span>'.$imgmeta['image_meta']['iso'].'</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( '曝光补偿:', 'salong' ).'</span>'.$exif.'</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( '曝光程序:', 'salong' ).'</span>'.$imgmeta['image_meta']['exposure_program'].'</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( '白平衡:', 'salong' ).'</span>'.$imgmeta['image_meta']['white_balance'].'</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( '闪光灯:', 'salong' ).'</span>'.$imgmeta['image_meta']['flash'].'</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( '分辨率:', 'salong' ).'</span>'.$imgmeta['image_meta']['resolutionUnit'].'</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( '软件:', 'salong' ).'</span>'.$imgmeta['image_meta']['software'].'</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( '尺寸:', 'salong' ).'</span>'.$imgmeta['width'].'*'.$imgmeta['height'].'px</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( '位置:', 'salong' ).'</span>'.$imgmeta['image_meta']['location'].'</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( '时间:', 'salong' ).'</span>'.date_i18n('Y-m-j G:i:s a',$imgmeta['image_meta']['created_timestamp']).'</li>';
- $shortcode.= '<li class="image-meta"><span>'.__( '版权:', 'salong' ).'</span>'.$imgmeta['image_meta']['credit'].'</li>';
- $shortcode.= '</ul> ';
- return $shortcode;
- }
- add_shortcode("exif", "sl_exif");
[successbox]这次只是介绍通过Wordpress附件函数来获取照片的EXIF信息(虽然不全),之后再写一些通过PHP函数获取所有EXIF信息的文章。[/successbox]本文原创,作者:萨龙龙,其版权均为萨龙网络所有。
如需转载,请注明出处:https://salongweb.com/wp-get-attachment-metadata-exif.html
一个平平常常的人,热爱生活、旅行和摄影,骑行去过西藏,一直计划再去。14年从江西骑行来到大理,现栖居于洱海边,食人间烟火,过简单生活,做简约设计!为所有交易添加基于百分比的附加费
/**
* 添加1%的附加费到你的购物车和结算页面
* 更改百分比以将附加费设置为适合的…萨龙龙开发主题这么久,第一次感染恶意代码,整个 WordPress 下的主题 functions.php 都被插入了一大段函数代码,百度一下也发…WooCommerce 插件默认为我的帐户页面提供了:仪表盘、订单、下载、地址、帐户详情几个页面,以及一个退出登录的按钮,如果出售的是实物或者没…WordPress推出已经十多年了,越来越多的个人与公司都是在使用其开发自己的网站,全球的开发者也都在为其提供程序。WordPress移动客户端…在开发 MNews 主题的快讯功能时,希望一天内发布的快讯文章在当天日期下,而不是每篇都显示一个日期,通过the_date()函数可完美的达到这…描述
已激活的插件不会再次尝试激活。
它的工作方式是在尝试包含插件文件之前将重定向设置为错误。如果插件失败,则重定向…在 WordPress 主题的开发过程中,获取用户 ID 的频率是很高的,可在 WordPress 中查看用户信息,也可以通过代码直接获取。
…Sixianqiu主题是专为诗歌设计开发的主题,有一些朋友也需要这样的多形式博客主题,就整理出来了。一开始所有的文章内容都是居中显示,这样对于其…萨龙网络已经开发了很多 WordPress 主题,LensNews 主题要创建的页面较多,所以导致很多用户来咨询如何设置用户中心,在最新上线的 …基于 DeepSeek 大模型,为龙霄主题深度集成 AI 智能翻译引擎。在 WordPress 后台一键完成 Polylang 字符串、页面、文…WordPress 默认支持多种图片格式包括 .jpg,.jpeg,.png,和.gif,出于安全考虑不能上传可缩放矢量图形(SVG)。SVG是…描述
WordPress核心执行期间,在特定点执行时或特定事件发生时,Actions是钩子。插件可以指定使用Action API在…