如何编写php函数或设置参数来返回图像的无高度值?
发布时间:2020-12-13 13:50:54 所属栏目:PHP教程 来源:网络整理
导读:这个问题来自这个 How to proportionally size images to fit dimensions of 200px x 150px thumbnail in css?,但是因为我觉得它不再是CSS相关的问题,我想我会创建一个新问题.我试图按比例将图像放入缩略图这里 http://giantmango.com/contest.我尝试将css i
这个问题来自这个
How to proportionally size images to fit dimensions of 200px x 150px thumbnail in css?,但是因为我觉得它不再是CSS相关的问题,我想我会创建一个新问题.我试图按比例将图像放入缩略图这里
http://giantmango.com/contest.我尝试将css img标签设置为下面,但所有图像的大小都是200px x 200px.没有另一条css线的高度为200px.我怀疑它是别的东西.
img { max-height: 150px; max-width: 200px; } 调用此函数以返回图像并认为它可能是这样. <?php $content = get_the_content('Concept'); $content = apply_filters('the_content',$content); list($col_class,$grid_img) = adjust_grid_image( $content,$col_w,$gap_w,$max_col,$flg_img_forcelink,$flg_obj_fit ); ?> <div <?php post_class('grid-item ' . $col_class); ?> id="post-<?php the_ID(); ?>"> <?php if ($grid_img) echo '<div class="grid-image">' . $grid_img . '</div>'; ?> 这些是我设置的参数. $col_w = 200; // width of grid column $gap_w = 7; // padding + margin-right (15+15+5) $max_col = 5; // max column size (style div.x1 ~ xN) $flg_img_forcelink = true; // add/overwrite a link which links to a single post (permalink). $flg_img_extract = true; // in single post page,extract thumbnail link to an original image. $flg_obj_fit = 'large-fit'; // none | small-fit | large-fit ... how to fit size of object tag. 这是运行adjust_grid_image的functions.php文件,但我不确定它在做什么.这是否将我的图像设置为200px x 200px?如果是这样,我必须更改哪个参数才能将200px硬编码为图像的高度,以便我可以在css中设置它? /* * return class name and image tag (resized w/h attributes) to fit a grid. */ function adjust_grid_image($content,$flg_obj_fit) { global $post; $col_class_base = 'x'; $col_class = $col_class_base . '1'; // default column-width class $arr_w = array(); for ($i=0; $i<$max_col; $i++) { $arr_w[] = ($col_w * ($i+1)) + ($gap_w * $i); } $grid_img = ''; $w = $h = 0; $matches1 = $matches2 = $matches3 = array(); // search *first* img/object tag preg_match('/<(img|object)(?:[^>]+?)>/',$content,$matches1); if ($matches1[1] == 'img') { preg_match('/<img(?:.+?)src="(.+?)"(?:[^>]+?)>/',$matches2); $img_url = ($matches2[1]) ? $matches2[1] : ''; if ($img_url) { // first,try to get attributes $matches_w = $matches_h = array(); preg_match('/width="([0-9]+)"/',$matches2[0],$matches_w); preg_match('/height="([0-9]+)"/',$matches_h); if ($matches_w[1] and $matches_h[1]) { $w = $matches_w[1]; $h = $matches_h[1]; } else { // ... or get original size info. $upload_path = trim( get_option('upload_path') ); $mark = substr(strrchr($upload_path,"/"),1); // default mark is 'uploads' preg_match("#$mark(/.+)$#",$img_url,$split_url); // split($mark,$img_url) if ($split_url[1] != null) { $img_path = $upload_path . $split_url[1]; list($w,$h) = @getimagesize($img_path); } } } for ($i=0; $i<$max_col; $i++) { // set new width and col_class if ( ($i >= $max_col - 1) or ($w < $arr_w[$i+1]) ) { $nw = $arr_w[$i]; $col_class = $col_class_base . ($i+1); break; } } $nh = (!$w or !$h) ? $nw : intval( ($h * $nw) / $w ); // set new height $grid_img = $matches2[0]; // add width/height properties if nothing $flg_no_w = (strpos($grid_img_edit,'width=') === false); $flg_no_h = (strpos($grid_img_edit,'height=') === false); if ($flg_no_w or $flg_no_h) { $grid_img_close = (substr($grid_img,-2) == '/>') ? '/>' : '>'; $grid_img_edit = substr( $grid_img,-(strlen($grid_img_close)) ); $grid_img_edit .= ($flg_no_w) ? ' width="0"' : ''; $grid_img_edit .= ($flg_no_h) ? ' height="0"' : ''; $grid_img = $grid_img_edit . $grid_img_close; } // replace new width/height properties $grid_img = preg_replace('/width="(d+)"/','width="'. $nw .'"',$grid_img); $grid_img = preg_replace('/height="(d+)"/','height="'. $nh .'"',$grid_img); // check image link //$chk_imglink = '/(<a(?:.+?)rel="(?:lightbox[^"]*?)"(?:[^>]*?)>)'. preg_quote($matches2[0],'/') .'/'; $chk_imglink = '/(<a(?:.+?)href="(?:.+?.(?:jpe?g|png|gif))"(?:[^>]*?)>)'. preg_quote($matches2[0],'/') .'/'; if ($flg_img_forcelink) { $grid_img = '<a href="'. get_permalink() .'" title="' . esc_attr($post->post_title) . '">' . $grid_img . '</a>'; } else if ( preg_match($chk_imglink,$matches3) ) { $grid_img = $matches3[1] . $grid_img . '</a>'; } } else if ($matches1[1] == 'object') { preg_match('/<object(.+?)</object>/',$matches2); $matches_w = $matches_h = array(); preg_match('/width="([0-9]+)"/',$matches_w); preg_match('/height="([0-9]+)"/',$matches_h); if ($matches_w[1] and $matches_h[1]) { $w = $matches_w[1]; $h = $matches_h[1]; } else { $flg_obj_fit = 'none'; } //set col_class (and new width if in '*-fit' condition) if ($flg_obj_fit == 'small-fit') { for ($i=0; $i<$max_col; $i++) { if ($i >= $max_col -1) { $nw = $arr_w[$i]; $col_class = $col_class_base . ($i+1); break; } else if ( $w < $arr_w[$i+1] ) { $nw = $arr_w[$i]; $col_class = $col_class_base . ($i+1); break; } } } else if ($flg_obj_fit == 'large-fit') { for ($i=$max_col -1; $i>=0; $i--) { if ( $w > $arr_w[$i] ) { if ($i >= $max_col -1) { $nw = $arr_w[$i]; $col_class = $col_class_base . ($i+1); } else { $nw = $arr_w[$i+1]; $col_class = $col_class_base . ($i+2); } break; } if ($i == 0) { $nw = $arr_w[$i]; $col_class = $col_class_base . ($i+1); } } } else { for ($i=0; $i<$max_col; $i++) { if ($i >= $max_col -1) { $col_class = $col_class_base . ($i+1); break; } else if ( $w < $arr_w[$i] ) { $col_class = $col_class_base . ($i+1); break; } } } $nh = (!$w or !$h) ? $nw : intval( ($h * $nw) / $w ); // set new height $grid_img = $matches2[0]; if ($flg_obj_fit == 'small-fit' or $flg_obj_fit == 'large-fit') { // replace new width/height properties $grid_img = preg_replace('/width="(d+)"/',$grid_img); $grid_img = preg_replace('/height="(d+)"/',$grid_img); } } return array($col_class,$grid_img); } 感谢您查看所有这些内容.
这是一些中间功能.代码中可能还有一些其他部分使用此函数的返回值并实际输出HTML.您应找到此部件并注释输出宽度和高度设置的部件.
但要注意,如果你的图像具有可变比例并且你重新缩放它们以保持这些比例(通过CSS),它们将不再适合网格.它们在页面上看起来比现在更加分散. 编辑现在您已经添加了更多详细信息,我认为应该足以删除以注释//添加宽度/高度属性开头的部分,如果没有 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |