萨龙网络
登录
首页-WordPress文章-WordPress-正文

WordPress附件函数wp_get_attachment_metadata简码获取照片EXIF信息

萨龙龙萨龙龙
WordPress
10年前
0
0
1.34W
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文件中(添加曝光补偿单位与转换快门时间代码来源Exifography插件),在编辑文章时使用简码:[exif id=""],来获取照片的EXIF信息(一个简码只能添加一个照片ID):
  1. //获取媒体图片EXIF信息
  2. function sl_exif($atts$content = null) {
  3.     extract(shortcode_atts(array(
  4.         "id" => ''
  5.     ), $atts));
  6.     $imgmeta = wp_get_attachment_metadata($id);
  7.     //添加曝光补偿单位
  8.     $exposure_bias_parts = explode("/"$imgmeta['image_meta']['exposure_bias']);
  9.     if ($exposure_bias_parts[0] == "0")
  10.         $exif = '';
  11.     else {
  12.         $float = intval($exposure_bias_parts[0]) / intval($exposure_bias_parts[1]);
  13.         if (is_int($float))
  14.             $exif = sprintf("%+d%s"$float, __('EV','exifography'));
  15.         elseif ($float <= -1 || $float >= 1)
  16.             $exif = sprintf("%+.1f%s"$float, __('EV','exifography'));
  17.         else
  18.             $exif = sprintf("%+d%s%d%s"intval($exposure_bias_parts[0]), "/"intval($exposure_bias_parts[1]), __('EV','exifography'));
  19.     }
  20.     //转换快门时间
  21.     if (isset($imgmeta['image_meta']['shutter_speed'])) {
  22.         if ((1 / $imgmeta['image_meta']['shutter_speed']) > 1) {
  23.             $speed = "1/";
  24.             if ((number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1)) == 1.3
  25.                 or number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1) == 1.5
  26.      or number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1) == 1.6
  27.                 or number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1) == 2.5) {
  28.                 $speed .= number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1, '.''') . "s";
  29.             }
  30.             else
  31.                 $speed .= number_format((1 / $imgmeta['image_meta']['shutter_speed']), 0, '.''') . "s";
  32.         }
  33.         else
  34.             $speed = $imgmeta['image_meta']['shutter_speed']."s";
  35.     }
  36.     $shortcode.= '<ul>';
  37.     $shortcode.= '<li class="image-meta"><span>'.__( '型号:', 'salong' ).'</span>'.$imgmeta['image_meta']['camera'].'</li>';
  38.     $shortcode.= '<li class="image-meta"><span>'.__( '镜头:', 'salong' ).'</span>'.$imgmeta['image_meta']['lens'].'</li>';
  39.     $shortcode.= '<li class="image-meta"><span>'.__( '光圈:', 'salong' ).'</span>f/'.$imgmeta['image_meta']['aperture'].'</li>';
  40.     $shortcode.= '<li class="image-meta"><span>'.__( '快门:', 'salong' ).'</span>'.$speed.'</li>';
  41.     $shortcode.= '<li class="image-meta"><span>'.__( '焦距:', 'salong' ).'</span>'.$imgmeta['image_meta']['focal_length'].'mm</li>';
  42.     $shortcode.= '<li class="image-meta"><span>'.__( 'ISO:', 'salong' ).'</span>'.$imgmeta['image_meta']['iso'].'</li>';
  43.     $shortcode.= '<li class="image-meta"><span>'.__( '曝光补偿:', 'salong' ).'</span>'.$exif.'</li>';
  44.     $shortcode.= '<li class="image-meta"><span>'.__( '曝光程序:', 'salong' ).'</span>'.$imgmeta['image_meta']['exposure_program'].'</li>';
  45.     $shortcode.= '<li class="image-meta"><span>'.__( '白平衡:', 'salong' ).'</span>'.$imgmeta['image_meta']['white_balance'].'</li>';
  46.     $shortcode.= '<li class="image-meta"><span>'.__( '闪光灯:', 'salong' ).'</span>'.$imgmeta['image_meta']['flash'].'</li>';
  47.     $shortcode.= '<li class="image-meta"><span>'.__( '分辨率:', 'salong' ).'</span>'.$imgmeta['image_meta']['resolutionUnit'].'</li>';
  48.     $shortcode.= '<li class="image-meta"><span>'.__( '软件:', 'salong' ).'</span>'.$imgmeta['image_meta']['software'].'</li>';
  49.     $shortcode.= '<li class="image-meta"><span>'.__( '尺寸:', 'salong' ).'</span>'.$imgmeta['width'].'*'.$imgmeta['height'].'px</li>';
  50.     $shortcode.= '<li class="image-meta"><span>'.__( '位置:', 'salong' ).'</span>'.$imgmeta['image_meta']['location'].'</li>';
  51.     $shortcode.= '<li class="image-meta"><span>'.__( '时间:', 'salong' ).'</span>'.date_i18n('Y-m-j G:i:s a',$imgmeta['image_meta']['created_timestamp']).'</li>';
  52.     $shortcode.= '<li class="image-meta"><span>'.__( '版权:', 'salong' ).'</span>'.$imgmeta['image_meta']['credit'].'</li>';
  53.     $shortcode.= '</ul> ';
  54.     return $shortcode;
  55. }
  56. add_shortcode("exif""sl_exif");
  57. //简码:[exif id=""]
[successbox]这次只是介绍通过Wordpress附件函数来获取照片的EXIF信息(虽然不全),之后再写一些通过PHP函数获取所有EXIF信息的文章。[/successbox]
标签:
本文原创,作者:萨龙龙,其版权均为萨龙网络所有。
如需转载,请注明出处:https://salongweb.com/wp-get-attachment-metadata-exif.html
萨龙龙

萨龙龙

侠客
一个平平常常的人,热爱生活、旅行和摄影,骑行去过西藏,一直计划再去。14年从江西骑行来到大理,现栖居于洱海边,食人间烟火,过简单生活,做简约设计!
1342.23M456.67W3.85W
分享:
CSS3 background-attachment:fixed实现滚动视差效果
CSS3 background-attachment:fixed实现滚动视差效果上一篇
Linux VPS云主机使用SSH安装PHP EXIF模块下一篇
Linux VPS云主机使用SSH安装PHP EXIF模块
相关文章
总数:107

解决网站嵌入优酷视频堆叠顺序的问题

很多网站都会插入优酷或其它网站的在线视频到自己的网站中,默认情况下优酷视频的堆叠顺序并不受CSS样式z-index属性的影响,在视频页面有滚动、…
萨龙龙萨龙龙
WordPress
9年前
0
0
1.28W
0

WordPress判断文章分页第一页和最后一页

Perimg主题,最近开发的一个图片主题,与之前开发的主题又有很多的进步,以及更多的、少见的实用功能。主题文章中如果是多页就会显示上下篇、上下页…
萨龙龙萨龙龙
WordPress
9年前
0
0
1.15W
0

WordPress桌面客户端无需浏览器管理多个站点及JetPack安装使用

WordPress推出已经十多年了,越来越多的个人与公司都是在使用其开发自己的网站,全球的开发者也都在为其提供程序。WordPress移动客户端…
萨龙龙萨龙龙
WordPress
9年前
0
0
1.70W
0

WordPress 如何根据文章类型向编辑器添加 CSS

在WordPress中,我们可以通过向主题中添加CSS文件来为页面和文章添加样式。但是,如果您希望根据文章类型添加自定义样式,该怎么办呢…
萨龙龙萨龙龙
WordPress
2年前
0
0
2.12W
0

WordPress 功能函数—— add_comments_page(将子菜单页添加到评论主菜单上)

描述 此函数具有一个功能,该功能将用于确定菜单中是否包含页面。 连接到处理页面输出的函数也必须检查用户是否具有所需的…
萨龙龙萨龙龙
WordPress Functions
6年前
0
0
1.76W
0

通过 WordPress 多语言插件 WPML 的语言配置文件 wpml-config.xml 来支持 Polylang 翻译主题选项字段

网上已经有很多介绍WordPress多语言的插件了,比如Polylang和WPML等强大的多语言插件,但是只是介绍,很快都是能掌握怎…
萨龙龙萨龙龙
WordPress
8年前
0
0
1.51W
0

WordPress the_date() 函数将同一天的文章显示在一个日期下

在开发MNews主题的快讯功能时,希望一天内发布的快讯文章在当天日期下,而不是每篇都显示一个日期,通过the_date()函数可完美的达到这…
萨龙龙萨龙龙
WordPress
7年前
0
0
8.91K
0

WordPress 最简便的边栏调用方法与提示

WordPress主题文章类型较多,想实现不同的文章类型页面调用不同的边栏,一般的方法是将代码写在主题根目录下的sidebar.php文件…
萨龙龙萨龙龙
WordPress
8年前
0
0
1.15W
0

WordPress Mega超级大菜单插件Ubermenu

Ubermenu是一个用户友好的、可高度定制响应式的Wordpress超级大菜单插件,工作原理与Wordpress3菜单系统类似,强大到可创建…
萨龙龙萨龙龙
WordPress
10年前
0
0
1.68W
0

WordPress 主题禁用古滕堡编辑器和小工具

WordPress4.9.8版本就发布了古滕堡编辑器,很好用,添加文章也比经典编辑器方便很多。在5.8版本后又在小工具中增加了古滕堡编辑…
萨龙龙萨龙龙
WordPress
4年前
0
0
1.51W
0

为woocommerce商城添加图片延迟(lazyload)加载功能

wordpress图片延迟加载已经不是稀奇的功能,网上有很多类似的文章,添加相当简单方便,woocommerce缩略图图片延迟加载也很方便的可以…
萨龙龙萨龙龙
WooCommerce
10年前
0
0
1.31W
0

自定义WooCommerce产品文章hook顺序

最近在做一款企业产品展示的商城网站,设计WooCommerce产品文章的布局与默认的布局有很大的不同,所以其中的一些模块都需要重新调整。WooC…
萨龙龙萨龙龙
WooCommerce
9年前
0
0
1.43W
0
评论表单游客 您好,欢迎参与讨论。
请输入昵称
请输入邮箱
请输入网址
0 / 0
评论列表
总数:0
萨龙网络
没有相关内容