Buen dia,
Necesitamos cargar una imagen desde ChartDirector, por lo cual se debe ejecutar un archivo plano.php.
Cuando se pide por extension, ejecutar el archivo plano, lo hace bien y muestra la imagen en el una ventana del browser, pero lo que necesitamos es que la imagen sea mostrada en un ef_fijo de un formulario, para lo cual utilizamos el siguiente codigo.
demo.php, retorna la imagen, pero el logo de la imagen se muestra vacia y en su lugar muestra una serie de codigos de maquina.
Concretamente la pregunta seria x toba como se ejecuta el archivo plano demo.php sobre un ef_fijo que es el que genera la grafica ?? es exactamente igual a como si se ejecutara una solicitud de archivo plano. pero NO encontramos la instrucciòn.
Trato de cargar la imagen en la temporal, pero a pesar de que esta bien direccionada NO la muestra en el ef_fijo, este es el codigo que llevo y el error que muestra
ERROR stream_copy_to_stream() expects parameter 1 to be resource, string given
function conf__form_grafica() {
//La imagen inicialmente no existe, es creada en get_grafica.
$fp_imagen = ci_consolidado_indicadores::get_grafica ( );
if (isset($fp_imagen)) {
//-- Se necesita el path fisico y la url de una archivo temporal que va a contener la imagen
$temp_nombre = md5(uniqid(time()));
$temp_archivo = toba::proyecto()->get_www_temp($temp_nombre);
//-- Se pasa el contenido al archivo temporal
$temp_fp = fopen($temp_archivo['path'], 'w');
stream_copy_to_stream($fp_imagen, $temp_fp);
fclose($temp_fp);
$tamaño = round(filesize($temp_archivo['path']) / 1024);
//-- Se muestra la imagen temporal
$datos['vista_previa'] = "<img src='{$temp_archivo['url']}' alt=''>";
} else {
$datos['vista_previa'] = null;
}
return $datos;
}
function get_grafica() {
require_once(toba_dir() . '/php/3ros/ChartDirector/lib/phpchartdir.php');
# The data for the pie chart
$data = array(25, 18, 15, 12, 8, 30, 35);
# The labels for the pie chart
$labels = array("Labor", "Licenses", "Taxes", "Legal", "Insurance", "Facilities", "Production");
# Create a PieChart object of size 360 x 300 pixels
$c = new PieChart(360, 300);
# Set the center of the pie at (180, 140) and the radius to 100 pixels
$c->setPieSize(180, 140, 100);
# Set the pie data and the pie labels
$c->setData($data, $labels);
# Output the chart
//header("Content-type: image/png");
//print($c->makeChart2(PNG));
return ($c->makeChart2(PNG));
}
pareciera ser que el problema esta en que el metodo ‘makeChart2(PNG)’ devuelve el contenido del archivo y no el puntero al recurso. Lo que deberias hacer es cambiar la llamada stream_copy_to_stream por un fwrite para guardar el contenido de $fp_imagen dentro de $temp_fp.
Ingeniero, muchas gracias eso era, finalmente la soluciòn para graficas con ChartDirector mostradas en un ef_fijo queda asì:
function conf__form_grafica() {
$fp_imagen = ci_consolidado_indicadores::get_grafica ( );
if (isset($fp_imagen)) {
//-- Se necesita el path fisico y la url de una archivo temporal que va a contener la imagen
$temp_nombre = md5(uniqid(time()));
$temp_archivo = toba::proyecto()->get_www_temp($temp_nombre);
//-- Se pasa el contenido al archivo temporal
$temp_fp = fopen($temp_archivo[‘path’], ‘w’);
//stream_copy_to_stream($fp_imagen, $temp_fp);
fwrite($temp_fp, $fp_imagen);
fclose($temp_fp);
$tamaño = round(filesize($temp_archivo[‘path’]) / 1024);
$datos[‘vista_previa’] = “<img src=‘{$temp_archivo[‘url’]}’ alt=‘’>”;
} else {
$datos[‘vista_previa’] = null;
}
return $datos;
}
function get_grafica() {
require_once(toba_dir() . '/php/3ros/ChartDirector/lib/phpchartdir.php');
# The data for the pie chart
$data = array(25, 18, 15, 12, 8, 30, 35);
# The labels for the pie chart
$labels = array("Labor", "Licenses", "Taxes", "Legal", "Insurance", "Facilities", "Production");
# Create a PieChart object of size 360 x 300 pixels
$c = new PieChart(360, 300);
# Set the center of the pie at (180, 140) and the radius to 100 pixels
$c->setPieSize(180, 140, 100);
# Set the pie data and the pie labels
$c->setData($data, $labels);
# Output the chart header("Content-type: image/png");
//print($c->makeChart2(PNG));
return ($c->makeChart2(PNG));
}