0

私はカスタム テーマを作成しており、サイトはほぼ完成しています。後でカルーセルに入れる画像をアップロードするために使用するカスタム フィールドのタイプを使用しています。画像 1069x1060 をアップロードすると、トリミングもタッチもされず、画像の内容全体が表示されることがわかりました。850x700 の画像をアップロードすると、画像がトリミングされ、領域全体が表示されなくなります

これはhttp://blog.jmrowe.com/portfolioで見ることができ ます。回転する画像を探すだけで、1 つがトリミングされていて、コンテンツ全体を見ることができないことに気付くでしょう。

また、[設定] -> [メディア] の下にある [サムネイルを正確なサイズにトリミングする (通常、サムネイルはプロポーショナルです)] オプションのチェックを外しましたが、これは役に立ちませんでした。カスタム機能の画像サイズは追加しませんでした。

奇妙なのは、小さなプレビュー画面に表示される画像を選択すると、画像がトリミングされていないことです。ただし、実際にサイトにアクセスすると、画像がトリミングされます。私も「フルサイズ」を選択しました

誰か助けてくれませんか?

タイプカスタムフィールドプラグインを使用して、これらを実際にテーマに表示しています:

<?php if (!((get_post_meta($post->ID, 'wpcf-portfoliopicture1', TRUE))=='')): ?>
<div class="row">
                        <div class="span8">
             <div class="span6 offset1" style="padding-left:20px;">
             <?php
$param['height']=350;
$param['width']=325; 
$param['alt']=types_render_field("portfoliotitle1",$param2);
$param['title']=types_render_field("portfoliotitle1",$param2);
?>
<ul class="round">
<li><?php echo(types_render_field("portfoliopicture1", $param)); ?></li>
<?php
$param['alt']=types_render_field("portfoliotitle2",$param2);
$param['title']=types_render_field("portfoliotitle2",$param2);
 ?>
<li><?php echo(types_render_field("portfoliopicture2", $param)); ?></li>
<?php
$param['alt']=types_render_field("portfoliotitle3",$param2);
$param['title']=types_render_field("portfoliotitle3",$param2);
 ?>
<li><?php echo(types_render_field("portfoliopicture3", $param)); ?></li>
</ul>
</div>



                        </div>
                    </div>
<?php endif; ?>

wp-includes/media.php に移動して関数 image_resize_dimensions に移動するとわかります

関数の一部を編集でき、画像を自動トリミングしません..ただし、サイズも変更しないため、ネイティブの画像は1000px x 900pxになります

私は、問題が以下の wp-includes\media.php 関数にあると確信しています:

function image_resize_dimensions($orig_w, $orig_h, $dest_w, $dest_h, $crop = false) {


    if ($orig_w <= 0 || $orig_h <= 0)
        return false;
    // at least one of dest_w or dest_h must be specific
    if ($dest_w <= 0 && $dest_h <= 0)
        return false;

    // plugins can use this to provide custom resize dimensions
    $output = apply_filters( 'image_resize_dimensions', null, $orig_w, $orig_h, $dest_w, $dest_h, $crop );
    if ( null !== $output )
        return $output;

    if ( $crop ) { 

        // crop the largest possible portion of the original image that we can size to $dest_w x $dest_h
        $aspect_ratio = $orig_w / $orig_h;
        $new_w = min($dest_w, $orig_w);
        $new_h = min($dest_h, $orig_h);

        if ( !$new_w ) {
            $new_w = intval($new_h * $aspect_ratio);
        }

        if ( !$new_h ) {
            $new_h = intval($new_w / $aspect_ratio);
        }

        $size_ratio = max($new_w / $orig_w, $new_h / $orig_h);

        $crop_w = round($new_w / $size_ratio);
        $crop_h = round($new_h / $size_ratio);

        $s_x = floor( ($orig_w - $crop_w) / 2 );
        $s_y = floor( ($orig_h - $crop_h) / 2 );
    } else {
        // don't crop, just resize using $dest_w x $dest_h as a maximum bounding box
        $crop_w = $orig_w;
        $crop_h = $orig_h;

        $s_x = 0;
        $s_y = 0;

        list( $new_w, $new_h ) = wp_constrain_dimensions( $orig_w, $orig_h, $dest_w, $dest_h );
    }

    // if the resulting image would be the same size or larger we don't want to resize it
    if ( $new_w >= $orig_w && $new_h >= $orig_h )
        return false;

    // the return array matches the parameters to imagecopyresampled()
    // int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h
    return array( 0, 0, (int) $s_x, (int) $s_y, (int) $new_w, (int) $new_h, (int) $crop_w, (int) $crop_h );

}

コアファイルをいじってはいけないことはわかっていますが、そうすると問題に影響しますが、何が修正されるのかわかりません。この関数はプラグイン (タイプ - カスタム タイプとフィールド) によって呼び出され、ここでトリミングが行われます。

4

1 に答える 1