Определяем горизонтальная картинка или вертикальная и помещаем ее в div статических размеров.
while ($r = mysql_fetch_array($a))
{
$image_name = $r['img_name'];
$image_path = "/path/to/".$image_name;
$image_ext = end(explode(".", $image_path));
if ($image_ext == 'png')
{
$image_src = imagecreatefrompng($image_path);
}
else if ($image_ext == 'gif')
{
$image_src = imagecreatefromgif($image_path);
}
else
{
$image_src = imagecreatefromjpeg($image_path);
}
$width_src = imagesx($image_src);
$height_src = imagesy($image_src);
if ($width_src > $height_src)
{
$used_size = "width='100px'";
}
else
{
$used_size = "height='100px'";
}
imagedestroy($image_src);
echo "<div style='width: 110px; height: 110px; float: left;'><img ".$used_size." src='/path/to/".$image_name."' alt='some_text' /></div>";
}
Если используются функции например:
imagecreatefrompng($file);
imagecreatefromgif($file);
imagecreatefromjpeg($file);
то после всех необходимых операций обязательно:
imagedestroy($source);
или рано или поздно (если на страничке таким образом производится работа с большим количеством изображений или изображенями большого размера) будет примерно такое:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20232 bytes) in /home/username/data/www/mysite.local/pagename.php on line 44
Пример использования: http://krylov.org.ua/?p=688
Чтобы узнать, делится ли число например на 4, условие будет выглядеть так:
Как пример:
<?php
for ($num=1;$num<=100;$num++)
{
if (($num % 4) == 0)
{
echo "<b>".$num."</b> делится на 4<br/>";
}
else
{
echo "<b>".$num."</b> не делится на 4<br/>";
}
}
?>
Хотя правильнее для этого примера будет:
<?php
for ($num=1;$num<=100;$num++)
{
echo "<b>".$num."</b> ";
if (($num % 4) != 0)
{
echo "не ";
}
echo "делится на 4<br/>";
}
?>
Если расширение файла известно то совсем просто (в примере для jpg
):
$f="path/to/imagename.jpg";
$src = imagecreatefromjpeg($f);
$w_src = imagesx($src);
$h_src = imagesy($src);
$w_src
— ширина в пикселях;
$h_src
— высота.
Для png:
$src = imagecreatefrompng($f);
Для gif:
$src = imagecreatefromgif($f);
Если тип файла заранее неизвестен то как определить подробно написано сдесь: Определить расширение файла средствами PHP
$path
— конечно путь к файлу..
1. explode()
— полученная строка преобразуется в массив строк, границами которых в оригинале был разделитесь «точка». Для случаев, когда точек несколько — end()
возвращает последний элемент массива.
end(explode(".", $path));
2. pathinfo()
возвращает ассоциативный массив, содержащий информацию о нужном файле, а именно элементы dirname
, basename
и extension
(если задача узнать не только расширение файла).
$path_info = pathinfo($path);
$ext = $path_info['extension'];
3. strrpos()
возвращает позицию последней точки в строке, а substr()
вырезает все символы, начиная с полученной ранее позиции точки, до конца строки. Для удаления точки в полученной подстроке, увеличиваем начало старта на одно смещение вправо (+1).
substr($fileName, strrpos($path, '.') + 1);
4. strrchr()
возвращает участок строки, следующий за указанным параметром (в нашем случае точкой), после чего substr()
отрезает первый символ — точку.
substr(strrchr($path, '.'), 1);
5. array_pop()
— выталкивает элемент в конце массива, end()
— устанавливает внутренний указатель массива на последний элемент.
array_pop(explode(".", $path));
6. pathinfo
pathinfo($path, PATHINFO_EXTENSION);
7. preg_replace
preg_replace('/^.*\.(.*)$/U', '$1', $path);
8. preg_match
preg_match('/\.(.*)$/U', $path, $matches)? $matches[1]: '';
Подробнее в источнике: http://habrahabr.ru/blogs/php/37753/
Нужен результат: меняется фон ячейки таблицы при наведении на нее мыши.
Допустим, переменная $classname
может принимать значения current
и nocurrent
. Менять фон нужно только для nocurrent
. Используем такие стили:
.nocurrent {
background: white;
}
.current {
background: red;
}
.nocurrent:hover {
background: red;
}
echo "<td class='".$classname."'>some text</td>";
В IE6 такой вариант работать не будет.
Можно так (но для current cтиль тоже будет меняться):
echo "<td class='".$classname."' onmouseover='style.backgroundColor=\"red\";' onmouseout='style.backgroundColor=\"white\";'>some text</td>";
Правильный вариант, ну во всяком случае у меня так получилось :)
function RPClass(hi) {
if (hi.className == 'nocurrent') {
hi.className = 'current_js';
}
}
function RPClassR(hi) {
if (hi.className == 'current_js') {
hi.className = 'nocurrent';
}
}
echo "<td class='".$classname."' onmouseover='RPClass(this);' onmouseout='RPClassR(this);'>some text</td>";
CSS (:hover теперь не нужен, стили просто будут меняться, вместо него второй стиль):
.current_js {
background: red;
}
Использовалась Ip-камера Media Tech MT4009, смотреть которую можно только через Internet Explorer, т.к. ей нужен ActiveX. Умеет делать снимки по движению — 97 кадров, после чего перезаписывает старые файлы, т.е. текущий снимок может иметь какое угодно имя. Файлы сохраняет в папку c:\tmp\webmd
, настроек чтобы изменить путь для сохранения нет. Получилось все так:
1. Расшариваем папку webmd
.
2. На Web-сервере, с которого будем смотреть картинку: предположительно у нас там FreeBSD с установленным apache. Монтируем расшаренную папку. Для монтирования создаем скрипт webmd_up.sh
:
#!/bin/bash
mount_smbfs -W DOMAIN_NAME -I 172.16.5.19 //username@pc_name/webmd/ /usr/home/username/public_html/remote
Для отмонтирования webmd_down.sh
:
#!/bin/bash
umount /usr/home/username/public_html/remote
3. index.php
:
<?php
define('PATH', 'remote/*.');
foreach (glob(PATH.'jpg') as $remote_file)
{
$files_array[$remote_file] = filemtime($remote_file);
}
asort($files_array);
$keys = array_keys($files_array);
$selected_file = array_pop($keys);
echo "<img src='".$selected_file."?nocashe=".time()."' alt='webmd current' title='webmd' />";
?>
?nocashe=".time()."
— нужно для того, чтобы отключить кэширование изображений.
4. На стрничке, где будем смотреть картинку, удобным для вас способом подключаем такой javascript:
function refresh() {
document.all.webmd.src = document.all.webmd.src;
}
window.setInterval("refresh()", 1000);
var html = "<iframe name=\"webmd\" src=\"http://domain_name/~username/\" width=\"640px\" height=\"480px\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" scrolling=\"no\"></iframe>";
document.write(html);