image_style_url은 이미지를 만들지 않습니다.


11

관리자 인터페이스를 통해 추가 한 그림의 썸네일을 얻기 위해 image_style_url 을 사용 하고 있습니다.

// $foo->field_picture['und'][0]['uri'] has value public://foo.jpg
image_style_url('foo-thumb', $foo->field_picture['und'][0]['uri']);

API는 URL이 요청 될 때 이미지가 생성 될 것이라고 명시하고 있습니다. 그러나 페이지를 방문하면 이미지가 표시되지 않습니다 (404). 함수에서 반환 된 URL의 형식이 양호하지만 파일이 생성되지 않았습니다.

'foo-thumb'폴더는 공용 데이터 폴더에 있으며 파일 권한이 정상이어야합니다. 이미지 캐시 플러시 (drupal image-flush foo-thumb)를 시도했지만 여전히 결과가 없습니다.

어떤 아이디어?

답변:


22

보낸 사람 : https://drupal.org/drupal-7.20-release-notes

또한 표준 image_style_url () API 함수를 사용하지 않고 프로그래밍 방식으로 이미지 파생물에 대한 링크를 생성하는 코드는 이미지가 파일 시스템에 존재하지 않는 경우 더 이상 올바르게 작동하지 않습니다. 필요한 토큰이 URL.

대신 이런 식으로 할 수 있습니다.

$image_uri      = $node->field_image[LANGUAGE_NONE][0]['uri']; // or any public://my_image
$style          = 'my_style';
$derivative_uri = image_style_url ($style, $image_uri);
$success        = file_exists($derivative_uri) || image_style_create_derivative(image_style_load($style), $image_uri, $derivative_uri);

$new_image_url  = file_create_url($derivative_uri);

2
끝에 if가 없을까요? 즉 : if ($ success) {$ new_image_url = file_create_url ($ derivative_uri); }
stefgosselin

3
에 대한 약간의 업데이트를 변수는 배열이됩니다image_style_create_derivative$style$style = image_style_load('my_style');
빅터 Lazov

나는 통과 할 수있는 답변을 편집 한 $style불구을 image_style_load()에 전달하기 전에 image_style_create_derivative()당으로 문서를 .
Felix Eve

file_create_url ($ derivative_uri); 나를 위해 일하지 않았다. 작업은 image_style_url ($ style, $ image_uri); (마지막 줄)을 대체했습니다.
Mark

file_create_url의이 메소드는 이미지 스타일을 적용하지 않습니다. 다른 이미지 스타일을 적용하는 솔루션을 찾았습니다. 정말 이상합니다.
Henry

7

일반적인 실수 중 하나는 URI의 형식이 잘못되었다는 것입니다. URI 매개 변수 앞에 접두사가 있는지 확인하십시오 public://.

나쁜 연습

$imageUrl = image_style_url('style_name', 'myimage.jpg');
$imageUrl = image_style_url('style_name', $node->field_x[$node->language][0]['filename']);

이렇게하면 이미지 토큰이있는 스타일 이미지에 URL이 출력되지만 이전에 생성되지 않은 스타일 이미지는 생성되지 않습니다.


좋은 연습

$imageUrl = image_style_url('style_name', file_build_uri('myimage.jpg')); // changes to 'public://myimage.jpg'
$imageUrl = image_style_url('style_name', $node->field_x[$node->language][0]['uri']);

위와 같이 스타일이 지정된 URL을 출력하고 없으면 스타일이 지정된 이미지를 생성합니다.


1

공용 파일 시스템 경로가 잘못되었습니다.


1

또 다른 옵션은 테마 기능을 사용하는 것입니다.

$img = theme('image_style', array('style_name' => 'your_image_style_machine_name', 'path' => $node->field_image['und'][0]['uri']));

URL을 반환하지 않고 img에 대한 html을 반환합니다.


1
$fid = file_load($field_yuorfield_fid);          
$image_uri = image_style_url('yuor_style', $fid->uri);
fopen($image_uri, 'r');

여기에 URL을 사용하여 HTML을 만들 수 있습니다.


0

foo-thumb스타일이 있는지 확인하십시오 admin/config/media/image-styles. 에서 확인하십시오 .

의 첫 번째 매개 변수 image_style_url는 A는 스타일 이름 이 아닌 폴더 이름입니다.


스타일이 존재하며 폴더 이름은 필자의 경우 스타일 이름과 동일합니다.
Bart

404 오류가 발생하면 메뉴가 존재하지 않는 것입니다. 모든 이미지 스타일 에이 문제가 있다고 생각합니다. Drupal 버전 및 정보에 대해 자세히 설명 할 수 있습니까?-어떤 웹 서버를 사용하고 있습니까? -깨끗한 URL 설정이 올바른가요?
Sang Le Thanh

메뉴가 존재하지 않는지 모르겠지만 파일은 존재하지 않습니다. 반환 된 URL은 올바르게 보이지만 서버에서 폴더를 확인하면 이미지가 없습니다. Drupal ( 'foo-thumb')이 만든 폴더가 있습니다. 깨끗한 URL로 Apache 2.2를 실행하면 모두 정상적으로 작동하는 것 같습니다.
Bart

이미지 생성 링크를 찾을 수 없습니다. .htaccess 파일을 검사하여 줄을 확인할 수 있습니까 ErrorDocument 404 /index.php, 도메인 위에서 Drupal을 실행하고 있습니까? 다른 시도는 imagemagick 툴킷을 설치하는 것이지만 PHP의 이미지 렌더링으로 인해 문제가 아니라는 것을 알았습니다.
Sang Le Thanh

0

이미지를 보려고 할 때 404가 표시되면 이미지 스타일 이름이 올바르지 않을 수 있습니다. 필자의 경우 이미지 스타일에 표시된 스타일 이름은 스타일 이름의 컴퓨터 이름이 아닙니다. 스타일 위로 마우스를 가져 가면 URL에 스타일 이름의 컴퓨터 이름이 표시됩니다. 머신 이름으로 변경하거나 현재 이름을 삭제하고 필요한 이름으로 다시 작성하십시오.

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