gallery

Error message

Warning: opendir(/swww2/var/www/palapanyo/gal/random/w150): failed to open dir: No such file or directory in x1returnimages() (line 13 of /sys1/sysb/var/www/thaitux.info/drupal/modules/php/php.module(80) : eval()'d code).

Error message

Warning: opendir(/swww2/var/www/palapanyo/gal/random/w150): failed to open dir: No such file or directory in x1returnimages() (line 13 of /sys1/sysb/var/www/thaitux.info/drupal/modules/php/php.module(80) : eval()'d code).
 

เอาโค๊ดเดิมจาก http://javascript.internet.com และโค๊ดเดิมจาก http://www.brainerror.net/scripts_js_blendtrans.php และโค๊ดเพิ่มเติมจาก http://www.javascriptkit.com/javatutors/externalphp2.shtml มาผสมผสานกัน

  • ปรับปรุงให้สามารถอ่านไฟล์รูปภาพจากไดเรคทอรี่ที่กำหนดได้ จะได้ไม่ต้องมาเขียนโค๊ดใหม่ทุกครั้งที่ไฟล์ภาพมีการเปลี่ยนแปลง
  • จะทำให้มีการจางหายก่อนการแสดงผลใหม่ เพื่อให้นุ่มนวลขึ้น (จริง ๆ แล้ว ตรงนี้สามารถตั้งค่าฉากหลังเป็นภาพเดิม แล้วจึงแสดงผลใหม่ จะทำให้ดูเหมือนภาพค่อย ๆ เปลี่ยนไป แต่ปัญหาคือจะดูไม่สวยเวลาขนาดภาพไม่เท่ากัน) ความสามารถนี้ ทดสอบกับ Konqueror และ IE ไม่ได้ผล

โค๊ดมีดังนี้

<?php
  // CODE FROM http://www.javascriptkit.com/javatutors/externalphp2.shtml
  //  Header("content-type: application/x-javascript");

  function returnimages($dirname=".") {
    // ***** CHANGE SOURCE OF IMAGE HERE
    $dirname="/swww2/var/www/palapanyo/gal/random/w150";
    // ***** URL OF IMAGE
    $url="http://www.palapanyo.com/gal/random/w150";
    $pattern="(\.jpg$)|(\.png$)|(\.jpeg$)|(\.gif$)"; //valid image extensions
    $files = array();
    $curimage=0;
    if($handle = opendir($dirname)) {
      while(false !== ($file = readdir($handle))) {
        if(eregi($pattern, $file)) { //if this file is a valid image
                                     //Output it as a JavaScript array element
          echo 'image_list['.$curimage.'] = new imageItem("'.$url.'/'.$file.'");';
          $curimage++;
        }
      }
      closedir($handle);
    }
    return ($files);
  }

?>

<script language="JavaScript">
<!-- Original:  Robert Bui (astrogate@hotmail.com) -->
<!-- Web Site:  http://astrogate.virtualave.net -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Begin
// ***** CHANGE TIMING HERE
var interval = 5;
var random_display = 1; // 0 = no, 1 = yes
interval *= 1000;

var image_index = 0;
image_list = new Array();

// ***** INSERT IMAGE LIST HERE
// image_list[image_index++] = new imageItem("http://www.palapanyo.com/gal/random/w150/chwesigon.jpg");
// ***** OR GET IMAGE FROM DIRECTORY
// CODE FROM http://www.javascriptkit.com/javatutors/externalphp2.shtml
<?php returnimages() ?>

// END IMAGE LIST

var number_of_image = image_list.length;

function imageItem(image_location) {
  this.image_item = new Image();
  this.image_item.src = image_location;
}
function get_ImageItemLocation(imageObj) {
  return(imageObj.image_item.src)
}
function generate(x, y) {
  var range = y - x + 1;
  return Math.floor(Math.random() * range) + x;
}
function getNextImage() {
  if (random_display) {
    image_index = generate(0, number_of_image-1);
  } else {
    image_index = (image_index+1) % number_of_image;
  }
  var new_image = get_ImageItemLocation(image_list[image_index]);
  return(new_image);
}
//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id);
    opacity = (opacity == 100)?99.99:opacity;
    // New Firefox
    object.style.opacity = (opacity / 100);
    // Mozilla & Firefox
    object.style.MozOpacity = (opacity / 100);
    // Safari, Konqueror
    object.style.KhtmlOpacity = (opacity/100) ;
    // IE/Win
    object.style.filter = "alpha(opacity:" + opacity + ")";
}
function dFadeOut(imageId, speed) {
  for (timer = 0; timer <= 100; timer++) {
    setTimeout("changeOpac(" + (100-timer) + ",'" + imageId + "')",(timer * speed))
  }
}
function FadeImage(place) {
  var imageId = 'imggalid';
  var image = document.getElementById(imageId);
  var speed = Math.round(2500 / 100);
  dFadeOut(imageId, speed)
  var recur_call = "rotateImage('"+place+"')";
  setTimeout(recur_call, 2500);
}
function rotateImage(place) {
  var divId = 'divgalid';
  var divbg = document.getElementById(divId);
  var imageId = 'imggalid';
  var image = document.getElementById(imageId);
  // set speed of fading
  var speed = Math.round(1500 / 100);

  // set background to old image
  document[place].backgroundImage=document[place].src;
  
  // make new image
  var new_image = getNextImage();
  document[place].src = new_image;

  // set opac to 0
  changeOpac(0, imageId);

  // fade image from 0 to 100
  for (timer = 0; timer <= 100; timer++) {
    setTimeout("changeOpac(" + timer + ",'" + imageId + "')",(timer * speed))
  }

  //var recur_call = "rotateImage('"+place+"')";
  //setTimeout(recur_call, interval);
  var recur_call = "FadeImage('"+place+"')";
  setTimeout(recur_call, interval);
}

//  End -->
</script>

ตรงที่จะแทรกโค๊ดใช้ html เหมือนเดิม ดังนี้

<div id="divgalid" style="width: 200px; height: 230px; text-align: center; float: right; background: #eee;">
  <img name="rImage" src="http://www.palapanyo.com/gal/random/w150/chaitiyo.jpg" id="imggalid" />
</div>
 

ปัญหาคือ ถ้ามีภาพมาก ๆ ถ้าเราใช้โปรแกรม gallery ก็จะยุ่งยากเกินไปในการนำภาพเข้าสู่ห้องแสดง

เลยทดลองเขียน php ในการแปลงไฟล์ภาพ แล้วแสดงผลเสร็จสรรพในตัวเดียวกัน

วิธีการคือ คัดลอกไฟล์ให้เข้าไปในไดเรคทอรี่ที่ต้องการ โปรแกรมที่สร้างขึ้น จะทำการแปลงโดยใช้ความสามารถของ convert ที่อยู่ในชุดแพคเกจ Image Magick (ต้องติดตั้ง imagemagick ก่อน)

ในโค๊ดตัวอย่าง จะแปลงภาพให้ลดเหลือ 50% ของไฟล์จริง แล้วจึงสร้างไฟล์ thumbnail สำหรับแสดงผลอย่างง่าย

โค๊ดตั้งชื่อว่า index.php มีดังนี้

Subscribe to RSS - gallery
 

Syndicate

Subscribe to Syndicate

Who's online

There are currently 0 users online.