2011-11-14 2 views
0

그래서 나는이 스크립트를 사용하여 위대한 이미지를 디렉토리에 위치시킬 수 있습니다. 그러나 이미지를 회전하려면 페이지 새로 고침이 필요합니다. 이미지 자체를 클릭했을 때 이미지를 회전 시키도록 수정하는 방법이 있습니까? 사전에 감사이미지 회전 스크립트

HTML :

<img src="rotate.php" alt="random image" /> 

PHP :

<?php 
    $folder = 'images/'; 

    $exts = 'jpg jpeg png gif'; 

    $files = array(); $i = -1; 
    if ('' == $folder) $folder = './'; 

    $handle = opendir($folder); 
    $exts = explode(' ', $exts); 
    while (false !== ($file = readdir($handle))) { 
     foreach($exts as $ext) { 
      if (preg_match('/\.'.$ext.'$/i', $file, $test)) { 
       $files[] = $file; 
       ++$i; 
      } 
     } 
    } 
    closedir($handle); 
    mt_srand((double)microtime()*1000000); 
    $rand = mt_rand(0, $i); 

    header('Location: '.$folder.$files[$rand]); 
?> 
+1

자바 스크립트를 클라이언트 측 문제로 사용했을 수 있습니다. – FloydThreepwood

+0

PHP가 잘 작동합니까? 브라우저 솔루션을 찾고 있습니까? – Matthew

+0

@Matt 내가 게시 한 모든 것은 훌륭하게 작동합니다. 난 단순히 이미지 디스플레이를 onclick 함수로 바꾸는 방법을 찾고 있었기 때문에 클릭했을 때 rotate.php에서 다른 이미지를 끌어 올 수있었습니다. – syllable3

답변

1

업데이트 : 이것은 매우 기본적인 그러나 그것을 테스트하고 작동하는지 확인;

<script> 
    function changeImage(o){ 
    o.src = 'http://www.domain.com/testtest.php?' + (new Date()).getTime(); // time to help stop caching 
    } 
</script> 
<img src="http://www.domain.com/testtest.php" onclick="changeImage(this)" /> 

하고 PHP에서 그것이 gif 또는 PNG 경우 이미지 등을 보내 콘텐츠 헤더를 추가

...

idear가 header 콘텐츠 형식을 설정하고 읽는 것입니다
<?php 
// see link at bottom for getting file extention 

switch ($selected_random_file_extention) { 
    case "gif": 
    header('Content-type: image/gif'); 
    $file_ext = "gif"; break; 
    case "jpg": 
    header('Content-type: image/jpg') 
    $file_ext = "jpg"; break; 
    case 3: 
    header('Content-type: image/png'); 
    $file_ext = "png"; break; 
    } 

    //header('Content-type: image/gif'); // send as image 



    //$random_image_name = rand(1,5); 

    // you would add $folder.$files[$rand]; and include you script above 
    $random_image_name = $folder.$files[$rand]; 



          // adjust paths as needed 
     $img_file = "http://www.domain.com/".$random_image_name.".gif"; 
                   // .$file_ext; 


    readfile($img_file); // not sure how memory will go 

    ?> 

readfile을 사용하여 파일을 출력 버퍼에 씁니다. 이미지를 요청하고로드 표시기를 easly 표시하기 위해 status을 사용하는 또 다른 수단으로 ajax를 사용할 수 있습니다.

URL을 다시 작성하려면 src에 대한 .php 확장자를 변경하거나 확장자가없는 경우에도 가능합니다. 그런 다음 확장자를 얻을 수 pathinfo 'extension'를 사용

http://php.net/manual/en/function.pathinfo.php

당신이 그때 당신의 IMG 태그의 둘레에 링크를 추가 할 자신의 클라이언트 측에 싶지 않는 경우 approprate Content-type

+0

이미지를 나열하는 Java 예제를 보았지만 20,000 개가 넘는 이미지가 있습니다. 나는 그것이 얼마나 느리게 나타날지 상상할 수밖에 없었다. – syllable3

+0

@ syllable3, right thats 다른 문제는 번호 매기기와 같은 예측 가능한 명명 스키마의 이미지 이름입니까? – david

+0

음수. 그들은 어떤 방법으로도 예측할 수 없습니다. 일부는 간격을 포함하고, 일부는 숫자를 포함합니다. – syllable3

0

를 설정하고 PHP 스크립트를 분할 두 개의 파일로

<a href="rotate.php"><img src="random.php" alt="random image" /></a> 

파일 1 (rotate.php은) : 이미지

파일 2 (random.php)를 회전 : 당신이 다음 IFRAME을 추가 할 수

header('Location: '.$folder.$files[$rand]); 
+0

나는 이것을 테스트했습니다. 페이지가 처음로드되면 이미지가 손상되고 클릭하면 실제 이미지가 사이트로로드됩니다. (예 : http://www.testsite.com/whateverimage.jpg) 이렇게하면 사용자는 이미지를 다시 클릭하여 다음 이미지로 회전 할 수 없습니다. – syllable3

0

임의의 이미지로 재 지정 자바 스크립트, 무작위로 해당 프레임 새로 고침

+0

브라우저 이미지 캐싱은 어떻게됩니까? – Matthew

+0

이 답변을 향상 시키려면 샘플 코드 스 니펫을 추가하는 것이 좋습니다. –

0

아약스로이 작업을 조사해 보셨습니까? 이렇게하면 PHP를 트리거 한 다음 이미지를 새로 고칠 수는 있지만 나머지 페이지는 새로 고칠 수 없습니다.

+0

나는 그렇지 않다. 아약스에 익숙하지 않습니다. – syllable3

+0

jQuery와 같은 프레임 워크를 사용해도 괜찮다면 Ajax는 놀라 울 정도로 간단합니다. (Documentation : http://api.jquery.com/jQuery.ajax/) JavaScript를 사용하여 이미지가 포함 된 div의 HTML을 업데이트하고 이미지 태그를 제거하고 새 태그를 추가하는 것도 비슷한 옵션입니다. (이것은 이미지를 일관성있게 새로 고칠 수는 없지만). – Brid

1
<script> 
function changeSrc(element) { 
    var file_names = ["image1.png", "image2.png", "image3.png"]; //etc 
    var i = Math.floor(Math.random() * file_names.length); 
    element.src = file_names[i]; 
} 
</script> 
<img src="image1.png" onclick="changeSrc(this)"> 

$ 파일을 인용 된 쉼표로 구분 된 문자열로 결합하고 위의 file_names 배열 값으로 삽입하십시오.

+0

모든 이미지가 동일한 이름 지정 형식을 사용하면 어떤 작업이 가능합니까? 디렉토리에는 20,000 개가 넘는 이미지가 있으며,이 이미지는 프로세스 속도를 크게 떨어 뜨릴 것으로 추측됩니다. – syllable3

+0

var file_names를 디렉토리로 변경하여 해당 디렉토리의 모든 이미지를 회전시킬 수 있습니까? – syllable3

+0

이것은 올바른 생각 인 것 같습니다. 기본적으로 링크를 클릭 할 때마다 임의의 숫자를 쿼리 문자열에 추가하여 JavaScript로 src 특성을 변경하십시오. 이미지를 새로 고치고 캐싱을 방지합니다. random image Matthew