|
|
|
|
|
для: DimkinStd
(17.04.2006 в 00:29)
| | Можно. Вот тебе статья для размышлений: http://www.xakep.ru/magazine/xa/073/120/1.asp
Мой тебе совет: лучше воспользуйся программой "ABBYY Screenshot Reader".
А вообще, для новых вопросов лучше создавать новые темы. | |
|
|
|
|
|
|
|
для: Саня
(16.04.2006 в 21:50)
| | А можно ли считать текст с картинки и вписать его в файл?
Чтобы PHP-скрипт работал в качестве Fine Reader'а ??? | |
|
|
|
|
 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 в 17:48)
| | И еще.
Я прописал imagejpeg($im,"file.jpg");
файл сохраняется.
А мне нужно, чтобы у него размеры изображения были в 2 раза больше.
Вобщем эту картинку надо еще увеличить в 2 раза.
Как это сделать? | |
|
|
|
|
|
|
|
для: Саня
(16.04.2006 в 17:02)
| | Спасибо большое!!! То, что нужно ))) | |
|
|
|
|
|
|
|
для: 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(); | |
|
|
|
|
|
|
|
для: Саня
(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($im, 15, 15);
$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($new, 0, 0, 0);
$white = imagecolorallocate($new, 0xFF, 0xFF, 0xFF);
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($new, null, 100);
// и освободим память
imagedestroy($im);
imagedestroy($new);
?>
|
Вот тут и пригодился мой скрипт :) http://softtime.ru/forum/read.php?id_forum=1&id_theme=7394 | |
|
|
|
|
|
|
| Имеется рисунок 1.jpg. Размеры 50*50
На рисунке нарисован один пиксель черным цветом в координатах 15*15.
Как выглядит скрипт, который считывает цвет этого пикселя в формате 0,0,0
--------------------------------------------------------------------------------------------------------
А вообще тема такая:
Фоткаю из книги рисунок(черно-белый). Фотография получается с оттенками. Лист - сероватый, кое-где оттенки.
Так вот, надо написать скрипт, который из этого рисунка делает строго.
Лист-белый. Линии рисунка - строго черными.
---------------------------------------------------------------------------------------------------------
Есть идея такая у меня:
ПХП считывает каждый пиксел рисунка. И сравнивает если ближе к белому, то рисует белый пиксел, если к черному ближе, то рисует черный пиксел. Т.е. будет рисунок этот переррисоввывать.
--------------------------------------------------------------------------------------------------
помогите плиз.... | |
|
|
|
|