Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Изображения и PHP

Сообщения:  [1-9] 

 
 автор: Саня   (17.04.2006 в 01:15)   письмо автору
 
   для: DimkinStd   (17.04.2006 в 00:29)
 

Можно. Вот тебе статья для размышлений: http://www.xakep.ru/magazine/xa/073/120/1.asp
Мой тебе совет: лучше воспользуйся программой "ABBYY Screenshot Reader".
А вообще, для новых вопросов лучше создавать новые темы.

   
 
 автор: DimkinStd   (17.04.2006 в 00:29)   письмо автору
 
   для: Саня   (16.04.2006 в 21:50)
 

А можно ли считать текст с картинки и вписать его в файл?
Чтобы PHP-скрипт работал в качестве Fine Reader'а ???

   
 
 автор: Саня   (16.04.2006 в 21:50)   письмо автору
1.7 Кб
 
   для: DimkinStd   (16.04.2006 в 21:46)
 

Это делается при помощи пользовательской функции resizeimg(): http://softtime.ru/forum/read.php?id_forum=1&id_theme=145

   
 
 автор: DimkinStd   (16.04.2006 в 21:46)   письмо автору
 
   для: DimkinStd   (16.04.2006 в 17:48)
 

И еще.
Я прописал imagejpeg($im,"file.jpg");
файл сохраняется.
А мне нужно, чтобы у него размеры изображения были в 2 раза больше.
Вобщем эту картинку надо еще увеличить в 2 раза.
Как это сделать?

   
 
 автор: DimkinStd   (16.04.2006 в 17:48)   письмо автору
 
   для: Саня   (16.04.2006 в 17:02)
 

Спасибо большое!!! То, что нужно )))

   
 
 автор: Саня   (16.04.2006 в 17:44)   письмо автору
 
   для: DimkinStd   (16.04.2006 в 17:20)
 

> И что в целом делает этот скрипт???
Он решает твою задачу - переводит изображение в чёрно-белый формат.

$new = imagecreate($size[0], $size[1]);
Создаём в памяти новое изображение с размерами $size[0], $size[1], которые я получил функцией getimagesize().

$black = imagecolorallocate($new, 0, 0, 0);
$white = imagecolorallocate($new, 0xFF, 0xFF, 0xFF);
В этих строках я определил белый и чёрный цвет, которыми я буду рисовать на новосозданном изображении.

imagefill($new, 1, 1, $white);
Тут я заливаю всё изображение белым цветом (ведь фон должен быть белым). Эту строку я пропустил в моём предыдущем посте, поэтому пишу тут.

for ($i = 1; $i < $size[0]; $i++) {
for ($j = 1; $j < $size[1]; $j++) {
В этих вложенных циклах я последовательно получаю цвет пикселя в исходном изображении $im.

$rgb = ImageColorAt($im, $i, $j);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
Этот блок текста, который я скопировал из документации, получает цвет пикселя, координаты которого определяются переменными $i и $j, изменяемые в цикле.

if ( $r < 128 && $r < 128 && $b < 128 ) {
Затем я сравнил полученные цвета rgb с нейтрально серым цветом (128, 128, 128). Если по всем трём параметрам исходный пиксель "темнее" (ближе к чёрному цвету (0, 0, 0))...

imagesetpixel($new, $i, $j, $black);
...то он закрашивается чёрным цветом $black, который я определил в начале cкрипта.

} elseif ( $r >= 128 && $r >= 128 && $b >= 128 ) {
Но, если цвет пикселя "ближе" к белому цвету (255, 255, 255)...

imagesetpixel($new, $i, $j, $white);
...то пиксель окрашивается в белый цвет $white.

header("Content-type: image/jpeg");
imagejpeg($new, null, 100);
Тут я вывожу полученное чёрно-белое изображение в браузер. 100 - качество сжатия jpeg, соответствует наилучшему качеству изображения.

getimagesize() - функция возвращает размеры изображения в пикселях;
imagecolorallocate() - функция возвращает идентификатор цвета, указанного в формате rgb;
imagecolorat() - функция возвращает цвет пикселя, координаты которого указаны в параметрах функции;
imagesetpixel() - функция закрашивает пиксел, координаты которого указаны в параметрах функции, указанным цветом;
imagejpeg() - функция выводит изображение в браузер в формате jpeg;
imagedestroy() - функция освобождает память, занятую изображениями, которые были созданы функцией imagecreate();

   
 
 автор: DimkinStd   (16.04.2006 в 17:20)   письмо автору
 
   для: Саня   (16.04.2006 в 17:02)
 

Объясни пожалуйста как это работает?
Первые две строчки я понимаю, а остальные нет.
И что в целом делает этот скрипт???

   
 
 автор: Саня   (16.04.2006 в 17:02)   письмо автору
 
   для: DimkinStd   (16.04.2006 в 16:44)
 

Для этого нужно воспользоваться функцией <a href="http://php.rinet.ru/imagecolorat">ImageColorAt()</a>:
<?php
$im 
ImageCreateFromJpeg("028.jpg");
$rgb ImageColorAt($im1515);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b $rgb 0xFF;
echo(
$r.", ".$g.", ".$b);
?>


Я решил задачу перевода в ч/б изображение так:
<?php
$im 
ImageCreateFromJpeg("028.jpg");

$size getimagesize("028.jpg"); // вычисляем размеры листа
$new imagecreate($size[0], $size[1]); // создаём пустое изображение с размерами листа 
$black imagecolorallocate($new000);
$white imagecolorallocate($new0xFF0xFF0xFF);

for (
$i 1$i $size[0]; $i++) { // цикл для обхода строк
  
for ($j 1$j $size[1]; $j++) { // цикл для обхода столбцов
    /* получим цвет точки $i, $j */
    
$rgb ImageColorAt($im$i$j);
    
$r = ($rgb >> 16) & 0xFF;
    
$g = ($rgb >> 8) & 0xFF;
    
$b $rgb 0xFF;
    
/* и сравним этот цвет с нейтрально серым */
    
if ( $r <  128 && $r 128 && $b 128 ) {
      
// если цвет темнее нейтрально серого
      // зальём этот пиксел чёрным цветом
      
imagesetpixel($new$i$j$black);
    } elseif ( 
$r >=  128 && $r >= 128 && $b >= 128 ) {
      
// если цвет светлее нейтрально серого
      // зальём этот пиксел белым цветом
      
imagesetpixel($new$i$j$white);
    }
  }
}
// выведем картинку в браузер
header("Content-type: image/jpeg");
imagejpeg($newnull100);
// и освободим память
imagedestroy($im);
imagedestroy($new);
?>


Вот тут и пригодился мой скрипт :) http://softtime.ru/forum/read.php?id_forum=1&id_theme=7394

   
 
 автор: DimkinStd   (16.04.2006 в 16:44)   письмо автору
 
 

Имеется рисунок 1.jpg. Размеры 50*50
На рисунке нарисован один пиксель черным цветом в координатах 15*15.
Как выглядит скрипт, который считывает цвет этого пикселя в формате 0,0,0
--------------------------------------------------------------------------------------------------------
А вообще тема такая:
Фоткаю из книги рисунок(черно-белый). Фотография получается с оттенками. Лист - сероватый, кое-где оттенки.
Так вот, надо написать скрипт, который из этого рисунка делает строго.
Лист-белый. Линии рисунка - строго черными.
---------------------------------------------------------------------------------------------------------
Есть идея такая у меня:
ПХП считывает каждый пиксел рисунка. И сравнивает если ближе к белому, то рисует белый пиксел, если к черному ближе, то рисует черный пиксел. Т.е. будет рисунок этот переррисоввывать.
--------------------------------------------------------------------------------------------------
помогите плиз....

   

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования