Много вопросов по php и нагрузку

616
.
Фuлuн (09.01.2011/13:05)
Вопрос: можно ли копировать картинку из одной папки в другую но что бы картинка была 100x100 а после копирования 32x32
function image_resize( $source_path, //Путь до файлу
	$destination_path, //имя и путь нового файла 
	$newwidth, //Размер изображения
	$newheight = FALSE, 
	$quality = FALSE // качество для формата jpeg
) {
	list($oldwidth, $oldheight, $type) = getimagesize($source_path);
	switch ($type) {
		case 1: $typestr = 'gif' ;break;
		case 2: $typestr = 'jpeg'; break;
		case 3: $typestr = 'png'; break;
	}
			if($typestr) {
				
				// Обрабатываем анимацию
				if($type == 1){
					$images = new Imagick($source_path);
					if($images->getNumberImages() > 1){
						$images = $images->coalesceImages();
						$oldwidth  = $images->getImageWidth();
						$oldheight = $images->getImageHeight();
						if($newheight > $oldheight) {
							$newheight = $oldheight;
						}
						if($newwidth > $oldwidth) {
							$newwidth = $oldwidth;
						}
						if (!$newheight) { $newheight = round($newwidth * $oldheight/$oldwidth); }
						elseif (!$newwidth) { $newwidth = round($newheight * $oldwidth/$oldheight); }
						
						do {
							$images->scaleImage($newwidth, $newheight);
						} while ($images->nextImage());
						$images = $images->deconstructImages();
						$images->writeImages($destination_path, true);
						
						return;
					}
				}
				
				$function = "imagecreatefrom$typestr";
				$src_resource = $function($source_path);
				
				if($newheight > $oldheight) {
					$newheight = $oldheight;
				}
				
				if($newwidth > $oldwidth) {
					$newwidth = $oldwidth;
				}
				
				if (!$newheight) { $newheight = round($newwidth * $oldheight/$oldwidth); }
				elseif (!$newwidth) { $newwidth = round($newheight * $oldwidth/$oldheight); }
				$destination_resource = imagecreatetruecolor($newwidth,$newheight);
				
				imagecopyresampled($destination_resource, $src_resource, 0, 0, 0, 0, $newwidth, $newheight, $oldwidth, $oldheight);
				
				imagegammacorrect($destination_resource, 1, 1.1);
				
				if ($type == 2) { # jpeg
					imageinterlace($destination_resource, 1);
					if ($quality) imagejpeg($destination_resource, $destination_path, $quality);
					else imagejpeg($destination_resource, $destination_path);
				} else { # gif, png
					$function = "image$typestr";
					$function($destination_resource, $destination_path);
				}
				
				imagedestroy($destination_resource);
				imagedestroy($src_resource);
			}
			
		}


для обработки анимации требуется библиотека imagick
если этой библиотеки нет на хосте, то закомментируй соответствующее условие
.
Уехал в Украину
спс завтро попробую
.
обработка будит такая примерно
image_resize('/dir/file.gif', '/newdir/newfile.gif', 32, 32);
.
Уехал в Украину
Как вывести с минимальной нагрузкой строку файла, где $a = номеру строки которую нужно получить
.
Уехал в Украину
как с помощью java скрипт сделать что бы при нажатии на ссылку страница не обновлялась а текст поста те $a появлялась в поле
.
╭∩╮ (`-`) ╭∩╮
Фuлuн (09.01.2011/11:39)
Зависит ли нагрузка от колл-во записей в массиве? или лучше создавать несколько массивов?
Напрямую, от этого зависит только объем занимаемой памяти.
---
А собственно нагрузка зависит от того, как ты будешь этот массив обрабатывать.
.
╭∩╮ (`-`) ╭∩╮
Фuлuн (09.01.2011/13:05)
Вопрос: можно ли копировать картинку из одной папки в другую но что бы картинка была 100x100 а после копирования 32x32
Да, можно, в двиге уже есть соответствующий класс, который умеет это делать (class.upload.php)
.
Уехал в Украину
ну у меня есть файл где 500 символов, там информация тут первая часть|тут вторая

по умолчанию равна 1 если кто то получил нажал получить информацию то в базе меняется 1 на 2 и те мне уже нужно получать в следующем разе строку 2.
.
Уехал в Украину
AlkatraZ (13.01.2011/22:15)
Да, можно, в двиге уже есть соответствующий класс, который умеет это делать (class.upload.php)
хм я думал что этот класс только работает с выгрузкой, у этого класса есть монуал по русски?
.
╭∩╮ (`-`) ╭∩╮
Фuлuн (13.01.2011/22:09)
Как вывести с минимальной нагрузкой строку файла, где $a = номеру строки которую нужно получить
Для этого есть единственная правильная, встроенная в РНР функция, это file()
Она читает все содержимое файла в массив (разбивая каждую строку).
А уж как дальше распорядиться массивом - это уже твое дело
Всего: 55