Доставить сгенерированный файл изображения клиенту без предварительной записи файла в каталог сервера - PullRequest
2 голосов
/ 13 августа 2010

Несмотря на то, что я установил права доступа к каталогу для 777, я все еще не могу заставить скрипт PHP написать файл изображения, сгенерированный им, в каталог на сервере.Итак, вместо того, чтобы бороться с этой проблемой, я подумал, почему бы не создать новую.На самом деле, я думал, что может быть более простое решение.Можно ли взять файл изображения (поток), сгенерированный на сервере, и «обмануть» клиента, чтобы файл не существовал в каталоге на сервере, чтобы результаты можно было просто передать напрямуюбраузер?

Ответы [ 4 ]

1 голос
/ 13 августа 2010

Вам не нужно писать файл, если вы просто делаете изображения на лету.Просто в верхней части php-файла установите тип файла 'image / png' (или любой другой) и пишите графику вместо текста.

<?php
$width = 300;
$height = 200;
$im     = imagecreate($width,$height);
$gray   = imagecolorallocate ($im,0xcc,0xcc,0xcc);
imagefilledrectangle($im,0,0,100,100,$grey);
header ("Content-type: image/png");
imagepng($im);
?> 
1 голос
/ 13 августа 2010

Да, это возможно. Установите заголовок типа контента на «image / png», затем выведите поток данных изображения.

header("Content-type: image/png");
0 голосов
/ 13 августа 2010

При использовании в качестве изображения URI

Преобразуйте данные в base64 (base64_encode) и используйте его в качестве URI:

data:MIMETYPE;base64,STUFF

например,

data:image/png;base64,iVBORAAAA...

Если отображается только изображение

Просто установите тип содержимого на правильный MIME и отобразите содержимое.

0 голосов
/ 13 августа 2010

Конечно. Допустим, у вас есть двоичные данные в переменной $im. Просто сделай:

header("Content-type: image/png"); //change to suit your needs
echo $im;

PHP прекрасно способен выводить данные не в формате HTML.

...