Получить содержимое png файла.

Статус
В этой теме нельзя размещать новые ответы.

Monterpan

Постоялец
Регистрация
3 Мар 2008
Сообщения
150
Реакции
27
есть следующий код:
PHP:
............
$logoImage = ImageCreateFromPNG('http://site.ru/sign.png'); 
$logoW = ImageSX($logoImage); 
$logoH = ImageSY($logoImage); 

ImageCopy($photoImage, $logoImage, $imgW-$logoW, $imgH-$logoH-15, 0, 0, $logoW, $logoH); 
............

нужно убрать вызов чтения внешнего файла Для просмотра ссылки Войди или Зарегистрируйся, т.е. сделать, что-нибудь похожее, как ниже:

PHP:
............
$logoImage = 'asdfjkaskljkasja'; 
$logoW = ImageSX($logoImage); 
$logoH = ImageSY($logoImage); 

ImageCopy($photoImage, $logoImage, $imgW-$logoW, $imgH-$logoH-15, 0, 0, $logoW, $logoH); 
............

Т.е обращаться к внешнему файлу нельзя.

var_dump(ImageCreateFromPNG('http://site.ru/sign.png')); не помог.

Помогите, пожалуйста.
 
Так imagecopy вторым аргументом принимает переменую типа resource
int imagecopy ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h )

А вы хотите чтобы она работала со строкой.
Чтобы на картинке появился текст или график например надо как-то подругому...

У меня вот такой файл есть
Код:
function waterMark($fileInHD, $wmFile, $jpegQuality = 90, $margin = 5) {
$wmImg   = imageCreateFromPNG($wmFile);
$jpegImg = imageCreateFromJPEG($fileInHD);
// Water mark random position
$wmX = (bool)rand(0,0) ? $margin : (imageSX($jpegImg) - imageSX($wmImg)) - $margin;
$wmY = (bool)rand(0,0) ? $margin : (imageSY($jpegImg) - imageSY($wmImg)) - $margin;
// Water mark process
//imageCopyMerge($jpegImg, $wmImg, $wmX, $wmY, 0, 0, imageSX($wmImg), imageSY($wmImg), $transparency);
imagealphablending($jpegImg, 1);
imagealphablending($wmImg, 1);
imagecopy($jpegImg, $wmImg, $wmX,$wmY,0,0,imageSX($wmImg),imageSY($wmImg));
// Overwriting image
ImageJPEG($jpegImg, $fileInHD, $jpegQuality);
}

waterMark($ftmp_1,'images/logo_on_photo.png');

А можно сделать что-то такое
Код:
function waterMark($fileInHD, $wmText, $jpegQuality = 90, $margin = 5) {
//$wmImg   = imageCreateFromPNG($wmFile);
$jpegImg = imageCreateFromJPEG($fileInHD);

// write the string at the top left
$textcolor = imagecolorallocate($jpegImg, 0, 0, 255);
imagestring($jpegImg, 5, 0, 0, $wmText, $textcolor);

// Overwriting image
ImageJPEG($jpegImg, $fileInHD, $jpegQuality);
}

waterMark($ftmp_1,'WaterMark');
 
Так imagecopy вторым аргументом принимает переменую типа resource
int imagecopy ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h )

А вы хотите чтобы она работала со строкой.
Чтобы на картинке появился текст или график например надо как-то подругому...

да мне нужно использовать переменную типа resource, но брать ее не с файла, а из строки.
PHP:
$img = 'ыфвп'; // строкой задается, не текст для отображения, а исходники картинки;
$src_im = (resource)$img;
int imagecopy ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h )

или по другому:
мне нужно получить содержимое файла Для просмотра ссылки Войди или Зарегистрируйся строкой. Чтобы не обращаться каждый раз к данному файлу, а просто сразу использовать его содержимое.
 
если пыха 5.1 или выше то можно сделать так:

PHP:
$fiveMBs = 5 * 1024 * 1024; // тут вместо этого место под размер картинки
$fp = fopen("php://memory/maxmemory:$fiveMBs", 'r+'); 
fputs($fp, "hello\n"); // тут вместо текста - "картинка текстом" :D
rewind($fp);

и все в $fp у тебя стрим открытой ПНГ картинки дальше пихай в имедж функцию
 
если пыха 5.1 или выше то можно сделать так:

PHP:
$fiveMBs = 5 * 1024 * 1024; // тут вместо этого место под размер картинки
$fp = fopen("php://memory/maxmemory:$fiveMBs", 'r+'); 
fputs($fp, "hello\n"); // тут вместо текста - "картинка текстом" :D
rewind($fp);

и все в $fp у тебя стрим открытой ПНГ картинки дальше пихай в имедж функцию

если использовать php://memory, а не php://temp , то выскакивают ошибки:
Warning: fopen() [function.fopen]: Invalid php:// URL specified ...;
Warning: fopen(php://memory/maxmemory:5242880) [function.fopen]: failed to open stream ...;
Warning: fputs(:( supplied argument is not a valid stream resource in ...;
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху