축소판에 둥근 모서리를 자동으로 추가하는 방법은 무엇입니까?


10

다음과 같은 것을 사용하여 작업중 인 특정 프로젝트에 대해 자동으로 둥근 모서리 썸네일을 만들고 싶습니다 .

내가 이상적으로하고 싶은 것은 이와 같은 것을 축소판 작성 프로세스 자체에 연결하고 서버 측에 캐시하는 방법을 찾는 것입니다. /wp-includes/media.php적용 가능한 후크가없는 것 같아서 내 롤을 굴려야 할 수도 있습니다.

어디서부터 시작할지에 대한 단서가 있습니까?

편집 : CSS에는 없습니다. 이것에 대한 좋은 제안이 있었지만 사이트 전체에 경계 반경을 사용하고 있으며 이미지는 서버 측에서 반올림해야합니다. 감사


+25 현상금에 대해 죄송합니다. 오늘 아침에 일 하느라 늦었어요
Dan Gayle

답변:


5

wp_create_thumbnail필터에 연결할 수있는 것 같습니다.

function wp_create_thumbnail( $file, $max_side, $deprecated = '' ) {
if ( !empty( $deprecated ) )
     _deprecated_argument( __FUNCTION__, '1.2' );
     $thumbpath = image_resize( $file, $max_side, $max_side );
     return apply_filters( 'wp_create_thumbnail', $thumbpath );
}

따라서 조작 만하고 결과를로 반환하십시오 wp_create_thumbnail.


아하! 다른 위치에 있습니다. 단맛. Lemme는 이것을 확인하지만, 내가 필요한 것을 찾은 것처럼 보입니다.
Dan Gayle

3
이 필터로 작동하는 코드를보고 싶었습니다.
Milo

1
@milo 내 대답은 당신이 시도 할 수 코드의 비트를 가지고
폴 셀 드레이크

3

Php 및 이미지 GD로 둥근 모서리를 처리 할 수는 있지만 (여전히 배경색을 선택해야 함) JavaScript 또는 CSS3로 쉽게 수행 할 수있는 작업 / 코드 / 처리가 엄청납니다.

CSS3의 둥근 이미지의 경우 이미지를 div로 감싸고 이미지를 해당 div의 배경 이미지로 만들어야하지만 실제로는 아닙니다.

따라서 jquery를 사용해야하고 필요할 때 스크립트를 대기열에 넣고 후크를 통해 또는 직접 jquery 클래스를 축소판에 추가해야한다고 생각합니다.

javascript / jquery 트릭은 기본적으로 4 개의 모서리 gif를 이미지에 적용하여 둥근 모양으로 표시합니다. 인터 웹에는 http://maestric.com/doc/css/rounded_corners_images 와 같은 다양한 jquery가 있습니다 .

둥글 지 않다고 아무에게도 말하지 마십시오.


3
" CSS3의 둥근 이미지의 경우 이미지를 div로 감싸고 이미지를 해당 div의 배경 이미지로 만들어야 합니다."-절대적으로 사실이 아닙니다. border-radius문제없이 IMG 태그에 직접 적용 할 수 있습니다.
Chip Bennett

그 jQuery 트릭은 멋지다. 클라이언트 쪽의 js 처리량을 최소로 유지하기 위해 서버 측에서 작업을 계속하고 싶습니다.
Dan Gayle

3

다음은 Wordpress 이미지 필터 중 하나를 사용하는 방법입니다. Chip Bennett에서 제안한 필터를 사용해 보았지만 성공하지 못했습니다.

내가 한 것은 사용자 정의 크기를 만든 다음 각 이미지가 특정 크기인지 phpthumb 필터를 적용하는지 여부를 확인합니다. 이상적으로는 사용자 정의 이미지 크기의 이름을 확인할 수 있기를 원하지만 아직 그 방법을 찾지 못했습니다.

add_theme_support( 'post-thumbnails' );
add_image_size( 'rounded-saturated', 250, 100, true ); 
require_once('path_to\phpthumb.class.php');
add_filter('image_make_intermediate_size', 'paul_rounded_filter');

function paul_rounded_filter($file) {
    $info = getimagesize($file);

    // check for our image size and do stuff
    if($info[0] == 250 && $info[1] == 100)
    {
        // create phpThumb object
        $phpThumb = new phpThumb();
        $phpThumb->resetObject();

        // set data source -- do this first, any settings must be made AFTER this call      
        $phpThumb->setSourceData(file_get_contents($file));
        $output_filename = $file;


        // PLEASE NOTE:
        // You must set any relevant config settings here. The phpThumb
        // object mode does NOT pull any settings from phpThumb.config.php
        //$phpThumb->setParameter('config_document_root', '/home/groups/p/ph/phpthumb/htdocs/');
        //$phpThumb->setParameter('config_cache_directory', '/tmp/persistent/phpthumb/cache/');

        // set parameters (see "URL Parameters" in phpthumb.readme.txt)
        $phpThumb->setParameter('fltr', 'ric|30|30');
        $phpThumb->setParameter('fltr', 'sat|-100');

        // generate & output thumbnail
        if ($phpThumb->GenerateThumbnail()) { // this line is VERY important, do not remove it!
            if ($phpThumb->RenderToFile($output_filename)) {
                // do something on success
                echo 'Successfully rendered to "'.$output_filename.'"';
                //die;
            } else {
                // do something with debug/error messages
                echo 'Failed:<pre>'.implode("\n\n", $phpThumb->debugmessages).'</pre>';
                die;
            }
        } else {
            // do something with debug/error messages
            echo 'Failed:<pre>'.$phpThumb->fatalerror."\n\n".implode("\n\n", $phpThumb->debugmessages).'</pre>';
            die;
        }
    }

    if ( $width || $height ) {
        if ( !is_wp_error($resized_file) && $resized_file && $info = getimagesize($resized_file) ) {
            $resized_file = apply_filters('image_make_intermediate_size', $resized_file);
            return array(
                'file' => wp_basename( $resized_file ),
                'width' => $info[0],
                'height' => $info[1],
            );
        }
    }
    return false;
}

해당 코드를 테마의 functions.php 파일에 추가하는 경우 phpthumb을 다운로드하고 경로를 설정하십시오. xampp의 로컬 설치에서 작동하므로 다른 사람들에게도 효과가 있기를 바랍니다. phpThumb 주석은 간단한 데모 예제에서 가져온 것입니다.


좋은. 이것은 내가 이야기 한 내용에 더 가깝습니다!
Dan Gayle

그게 당신을 위해 일했습니까?
Paul Sheldrake

아직 테스트 할 기회가 없었습니다. 그래도 고마워!
Dan Gayle

2

CSS로 이것을하지 않을 이유는 없습니다. IE 8 이하를 제외한 모든 주요 브라우저에서 작동합니다 :

IE를 실제로 지원하려면 Modernizr을 사용하면 사용할 수없는 브라우저의 대상 img 요소에 둥근 모서리의 클래스를 추가 할 수 있습니다.

미리보기 이미지와 CSS에 class = "rounded-corners"를 추가하십시오.

.rounded-corners {
    -moz-border-radius: 30px 30px 30px 30px;
    -webkit-border-radius: 30px 30px 30px 30px;
    border-radius: 30px;
}

Firebug를 사용하여 이미지 클래스에 모서리를 추가하여 WPCandy.com의 첫 페이지에서 임의의 이미지에 대한 빠른 테스트를 수행했습니다. 결과는 다음과 같습니다.

전에:

여기에 이미지 설명을 입력하십시오

후:

여기에 이미지 설명을 입력하십시오

CSS가 Firebug에 입력되었습니다 :

여기에 이미지 설명을 입력하십시오

둥글 지 않은 코너는 필요한 경우 대체 방법 중 하나를 사용하십시오.


Modernizr을 사용 하여이 작업을 수행하는 것이 좋습니다. 그래도 서버 쪽이 필요합니다.
Dan Gayle

물론 해당 사이트 중 하나에 여전히 80 %의 IE <9 트래픽이 있습니다.
Dan Gayle

1

어떤 섬네일, 일반적으로 "섬네일"이미지 크기 또는 포스트 섬네일을 스타일링 하시겠습니까?

두 가지 모두 CSS를 통해 쉽게 달성 할 수 있습니다 border-radius. 구체적인 답변은 귀하의 정확한 요구에 달려 있습니다. 기꺼이 업데이트하겠습니다.

PS IMHO가 TimThumb / 캐시 된 이미지 라우트로가는 것은 최적이 아닙니다. WordPress에서 생성 한 사각형 코너 이미지 (이미 객체 캐시의 일부 임)를 사용하고 CSS를 사용하여 모서리를 둥글게하십시오.


1
경계 반경은 이미지에 적용되지 않습니다. 정말 까다 롭습니다.
fuxia

img 태그에 적용하면 Mozilla의 경계 반경에 사각형 모서리가 나타납니다
Dan Gayle

div 래퍼의 배경 이미지로 적용해야하며 이는 실용적이지 않습니다.
Wyck

border-radius는 현재 mozilla의 img 태그에서 직접 작동합니다.
Milo

Milo가 말한 것. border-radius이미지에서 잘 작동합니다. 나는 내 테마에 Gravatars를 주석으로 사용합니다.
Chip Bennett

1

구글 검색시 GD로 모서리를 둥글게 할 수 있지만 결과는 가장 크지 않습니다. 그들은 약간 멍청하다. 하지만 그것은 내 주관적인 전화입니다 : http://www.assemblysys.com/dataServices/php_roundedCorners.php

이 작업을 수행해야하는 경우 timthumb 스크립트를 시작점으로 사용하는 것이 좋습니다.

Timthumb 프로젝트 : http://timthumb.googlecode.com http://timthumb.googlecode.com/svn/trunk/timthumb.php

Stackoverflow는 이것에 대한 게시물을 가지고 있습니다 : /programming/609109/rounded-corners-on-images-using-php


0

ccs3pie Rounded Corners 및 CSS3 해킹을 살펴 보았습니까? 즉, 좋은 오래된 즉, 제출을 강제로 수행하는 것뿐만 아니라 원하는 것을 수행해야합니다.


이것은 이상적이지만 일관되게 작동하는 것은 결코 얻지 못했습니다. 나는 이것을 머리 위로 뽑아 냈습니다.
Dan Gayle

0

OK 이것은 쉽다 !!

사람들이 가장 깨끗하고 가장 쉬운 방법이라고 말한 것처럼 먼저 css3 border-radius를 사용하는 것입니다. 이것은 IE9가 지원하지는 않지만 지원하지 않는 일반적인 IE6-8을 제외하고 대부분의 최신 브라우저에서 작동합니다.

.round {
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    border-radius: 10px;
}

그래서 당신이 나와 같고 클라이언트가 모두 IE를 사용한다면 위의 http://css3pie.com/ 과 같이 CSS3 Pie를 권장 합니다. 유일한 단점은 이미지의 z- 색인을 어지럽히므로 페이딩하는 슬라이더를 사용하면 문제가 발생할 수 있습니다.

CSS3 Pie를 사용하지 않는다면 http://jquery.malsup.com/corner/를 추천 합니다. jQuery와 함께 헤더에 간단히 연결하고 다음을 사용하십시오.

<script>
        $(function(){
        $('.round').corner();
    });
</script>

CSS3 선언을 선택하고이를 지원하지 않는 브라우저의 경우 jquery를 통해 둥근 모서리를 렌더링합니다.

우리는 최근에 클라이언트 웹 사이트에서이 두 가지를 사용했습니다 : http://www.theathenaprogramme.co.uk/

작업 완료 :-) 이것이 도움이 되길 바랍니다.

편집 : 방금 media.php를 통해 이미지를 저장하기 전에이 작업이 필요하다는 것을 알았습니다. 이 경우 내 솔루션이 적용되지 않는다고 생각하십시오.


0

Get Post Image 플러그인을 사용하여이 작업을 수행했습니다. http://surfhatteras.com/

Get Post Image는 Image WordPress 플러그인 가져 오기 및 phpThumb 라이브러리의 래퍼입니다.

그것을 사용하면 <?php get_post_image ('w=200&amp;zc=1&amp;fltr[]=ric|30|30'); ?> 게시 된 이미지의 모서리를 둥글게하는 것과 같은 일 을 할 수 있습니다 . 또는 이미지를 직접 포장 할 수 있습니다 : http://phpthumb.sourceforge.net/demo/demo/phpThumb.demo.demo.php#x33

캐시하는 것을 잊지 마십시오! http://mrphp.com.au/code/image-cache-using-phpthumb-and-modrewrite

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.