Foros del Web » Programando para Internet » PHP »

Llamar a imagen redimensionada en un thumbnail.php desde su html src

Estas en el tema de Llamar a imagen redimensionada en un thumbnail.php desde su html src en el foro de PHP en Foros del Web. Buenas. Estoy intentando hacer un thumbnail básico de imágenes que cargan desde la base de datos en tamaño grande pero en algunas zonas de la ...
  #1 (permalink)  
Antiguo 28/04/2019, 04:42
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Llamar a imagen redimensionada en un thumbnail.php desde su html src

Buenas.

Estoy intentando hacer un thumbnail básico de imágenes que cargan desde la base de datos en tamaño grande pero en algunas zonas de la web cargan a un tamaño específico mucho más pequeño (por ejemplo a 70x70).

He hecho varias pruebas de varias maneras y por ahora solo he conseguido o guardarlas a dicho tamaño en una carpeta o bien mostrarlas en el navegador con su header, sin embargo la idea es mostrarla desde su <img src=""> correspondiente.

En este archivo de ejemplo "thumbnail-crop-final.php"

Código PHP:
<?php

$nombre 
"budismo.jpg";
  
$img imagecreatefromjpeg("img/$nombre");
$imgs getimagesize("img/$nombre");


$w $imgs[0];
$h $imgs[1];


$escala_w 70/$w;
$escala_h 70/$h;

$nuevo_ancho floor($w*$escala_w);
$nuevo_alto floor($h*$escala_h);

$tp imagecreatetruecolor($nuevo_ancho$nuevo_alto);

imagecopyresampled($tp$img0,0,0,07070$w$h);


//Opción para guardarla directamente en una carpeta
imagejpeg($tp"miniaturas/$nombre"100);

//Con esta opción logro verla en pantalla con el nuevo tamaño 70x70
Header("Content-type: image/jpeg");
imagejpeg($tpNULL100);

//imagejpeg($img);
imagedestroy($img);

?>
¿Cómo puedo añadir dicho ejemplo al html?

He intentado varias maneras y de varios ejemplos incluyendo recibiendo parámetros desde la url, o llamando a ese archivo creado desde el mismo html, o incluso con base64 etc etc y no he sido capaz.

¿Qué puedo añadir para mostrarla desde <img src="">

La idea es redimensionar esas imágenes cargadas en las variables desde la base de datos, ejemplo $nombre y que luego se redimensionen a 70x70 y las pueda mostrar o cargar desde su html y no como las muestars con Header("Content-type: image/jpeg"); que las deja en medio con un fondo negro.

Saludos.
  #2 (permalink)  
Antiguo 29/04/2019, 04:08
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Llamar a imagen redimensionada en un thumbnail.php desde su html src

Hola de nuevo.

Por ahora he encontrado una solución, por ejemplo si creo un nuevo archivo "cargar-thumb.php" y dentro de este llamo al php del thumb que redimensiona (""thumbnail-crop-final.php") parece que va correctamente.

Código HTML:
Ver original
  1. cargar-thumb.php
  2.  
  3. <img src="thumbnail-crop-final.php" />

No se si será la mejor manera para mejorar la velocidad de la página pero al menos ya me funciona. ¿Alguna otra recomendación?

Saludos.
  #3 (permalink)  
Antiguo 29/04/2019, 17:39
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Llamar a imagen redimensionada en un thumbnail.php desde su html src

Cita:
Iniciado por kahlito Ver Mensaje
Hola de nuevo.

Por ahora he encontrado una solución, por ejemplo si creo un nuevo archivo "cargar-thumb.php" y dentro de este llamo al php del thumb que redimensiona (""thumbnail-crop-final.php") parece que va correctamente.

Código HTML:
Ver original
  1. cargar-thumb.php
  2.  
  3. <img src="thumbnail-crop-final.php" />

No se si será la mejor manera para mejorar la velocidad de la página pero al menos ya me funciona. ¿Alguna otra recomendación?

Saludos.
mejora la velocidad, mandando las cabeceras de CACHE, sobre la imagen, asi se almacenara en el navegador del cliente y no hara la solicitud nuevamente
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #4 (permalink)  
Antiguo 29/04/2019, 21:18
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Llamar a imagen redimensionada en un thumbnail.php desde su html src

La mejor opción es crear los thumbs al subir las imágenes y no tener que crearlos cada que los quieras mostrar. Lo que yo hago es agregar al final un sufijo .th antes de la extensión, de forma que:

imagen1234.jpg - imagen1234.th.jpg

Solamente guardo en base de datos el nombre de la imagen sin redimensionar y con str_replace() obtengo el nombre de la imagen de vista previa.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 28/06/2019, 12:21
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Llamar a imagen redimensionada en un thumbnail.php desde su html src

Hola de nuevo, por fin puedo recuperar este tema.

Por ahora he intentado estas dos maneras:

1 - Llamando al archivo donde se hace la redimensión nueva de la imagen al nuevo tamaño y la cargo en el archivo a mostrar.

redimensionador.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. //Redimensionador
  4.  
  5. //Opción 1 para cargar desde otro archivo.
  6.  
  7. /*$nombre = "budismo_0011.jpg";
  8.  
  9. $img = imagecreatefromjpeg("img/$nombre");
  10. $imgs = getimagesize("img/$nombre");*/
  11.  
  12. $nombre_archivo = "ajo_tradiciones.jpg";
  13. $rutaCarpetas = "views/images/$nombre_archivo";
  14.  
  15. //$img = imagecreatefromjpeg("img/$nombre");
  16. //$imgs = getimagesize("img/$nombre");
  17.  
  18. $img = imagecreatefromjpeg($rutaCarpetas);
  19. $imgs = getimagesize($rutaCarpetas);
  20.  
  21.  
  22. $w = $imgs[0];
  23. $h = $imgs[1];
  24.  
  25.  
  26. $escala_w = 70/$w;
  27. $escala_h = 70/$h;
  28.  
  29. $nuevo_ancho = floor($w*$escala_w);
  30. $nuevo_alto = floor($h*$escala_h);
  31.  
  32. $tp = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  33.  
  34. imagecopyresampled($tp, $img, 0,0,0,0, 70, 70, $w, $h);
  35.  
  36.  
  37. //Opción para guardarla directamente en una carpeta
  38. //imagejpeg($tp, "miniaturas/$nombre", 100);
  39.  
  40. //Con esta opción logro verla en pantalla con el nuevo tamaño 70x70
  41. Header("Content-type: image/jpeg");
  42. imagejpeg($tp, NULL, 100);
  43.  
  44. //imagejpeg($img);
  45.  
  46. ?>

crop-cargador.php

Código HTML:
Ver original
  1. <p>Opción redimensionada desde archivo externo</p>
  2. <img src="redimensionador.php" />
  3. <p>Opción redimensionada desde archivo externo desde la ruta de carpetas</p>
  4. <img src="views/modules/redimensionador.php" />
  5.  
  6.  
  7. <p>Prueba para ver si la ruta de imágenes es correcta en el servidor online.</p>
  8.  
  9. <?php
  10.  
  11. $nombre_archivo = "ajo_tradiciones.jpg";
  12. $rutaCarpetas = "views/images/$nombre_archivo";
  13.  
  14. //Compruebo la ruta del archivo a cargar;
  15. //echo include "views/modules/redimensionador.php";
  16. //echo include "redimensionador.php";
  17.  
  18. ?>
  19.  
  20. <img src="<?php echo $rutaCarpetas; ?>">

Esta prueba me sale bien en localhost, sin embargo al subirlo al servidor online no funciona. ¿A que se debe? ¿tengo que hacer otro cambio?

2 - Intento hacerlo con base64, y me sale bien solo que aun no sé como debería aplicarle los nuevos tamaños tal y como hice con redimensionador.

crop-base64.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. //Base64
  4. //$bytesCodificados = base64_encode(file_get_contents("/ruta/hasta/la/imagen.png"))
  5.  
  6. //En la ruta Raiz
  7. //$file = '139800541042.437';//FotoTarot_005.jpg
  8. //$fileJpg = 'FotoTarot_005.jpg';//
  9.  
  10. //En la ruta relativa con carpetas
  11. $file = 'views/images/139800541042.437';//FotoTarot_005.jpg
  12. $fileJpg = 'views/images/FotoTarot_005.jpg';//
  13.  
  14. //Ruta en el servidor.
  15. $nombre_archivo = 'FotoTarot_005.jpg';
  16. $rutaCarpetas = "views/images/$nombre_archivo";
  17.  
  18.  
  19. $imagedataFile = file_get_contents($file);
  20. $imagedataJpg = file_get_contents($fileJpg);
  21. $imgs = file_get_contents($rutaCarpetas);
  22.  
  23.  
  24. echo '<p>Imagen con datos numéricos</p>';
  25. echo '<img src="data:image/jpeg;base64,'.base64_encode($imagedataFile).'"/>';
  26. echo '<p>Imagen con ruta normal</p>';
  27. echo '<img src="data:image/jpeg;base64,'.base64_encode($imagedataJpg).'"/>';
  28. echo '<p>Imagen desde ruta carpetas</p>';
  29. echo '<img src="data:image/jpeg;base64,'.base64_encode($imgs).'"/>';
  30.  
  31. ?>

Aquí como comento anteriormente las imágenes cargan perfectamente tanto en el servidor local como en el servidor de la web, sin embargo no se aún como darle un tamaño previo especificado antes de cargarlas.

Finalmente vuelvo a a hacerme la misma pregunta ¿entre esas dos posibles opciones cual seria la más recomendable?

tuadmin, la opción de mandar las cabeceras de caché sobre la imagen ¿cómo podría ser?

Triby, tu idea es lo primero que pensé, pero en este caso al ser un proyecto ya realizado por otros anteriormente las imágenes estaban así prestablecidas y además suelen tener en el index hasta 2 o 3 opciones aparte del original, es decir tienen el tamaño máximo original, luego otro un poco menor , luego otras 5 imágenes en miniatura, luego otras tres a tamaño medio y luego uno último a tamaño entre medio y miniaturas, de ahí que busque las opciones que indico arriba.

Gracias de nuevo por vuestra ayuda, saludos.
  #6 (permalink)  
Antiguo 02/07/2019, 08:33
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Llamar a imagen redimensionada en un thumbnail.php desde su html src

Hola de nuevo.

Vuelvo a recuperar este tema ya que sigo sin resolverlo.

En cuanto a base64 no se si lo estoy haciendo correctamente y aun sigo sin saber como llamar o dar un ancho y alto previo para imprimir la imagen antes de codificarla.

Por otro lado retomando también la opción con header en redimensaionador.php veo que añadiendo en el código ob_clean(); entonces el archivo en sí aparece con la imagen pero cuando lo llamo desde el archivo real que lleva las imágenes sigue sin mostrarlo.

redimensionador.php

Código PHP:
Ver original
  1. <?php
  2. //Redimensionador
  3. //Opción 1 para cargar desde otro archivo.
  4. $nombre_archivo = "ajo_tradiciones.jpg";
  5. $rutaCarpetas = "views/images/$nombre_archivo";
  6.  
  7. $img = imagecreatefromjpeg($rutaCarpetas);
  8. $imgs = getimagesize($rutaCarpetas);
  9.  
  10.  
  11. $w = $imgs[0];
  12. $h = $imgs[1];
  13.  
  14.  
  15. $escala_w = 70/$w;
  16. $escala_h = 70/$h;
  17.  
  18. $nuevo_ancho = floor($w*$escala_w);
  19. $nuevo_alto = floor($h*$escala_h);
  20.  
  21. $tp = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  22.  
  23. imagecopyresampled($tp, $img, 0,0,0,0, 70, 70, $w, $h);
  24.  
  25. ob_clean();//Añadiendo ob_clean logro que online se muestre la imagen.
  26. //Con esta opción logro verla en pantalla con el nuevo tamaño 70x70
  27. Header("Content-type: image/jpeg");
  28. imagejpeg($tp, NULL, 100);
  29.  
  30. ?>

Ahora si puedo verla en el servidor online con la pantalla negra y la imagen en el centro, pero cuando la quiero llamar desde el archivo real que cargará la imagen, en este caso crop-cargador.php en el servidor online sigue sin aparecer:

Código HTML:
<p>Opción redimensionada desde archivo externo</p>
<img src="redimensionador.php" />
<p>Opción redimensionada desde archivo externo desde la ruta de carpetas</p>
<img src="views/modules/redimensionador.php" /> 
¿Qué estoy haciendo mal?

Saludos.
  #7 (permalink)  
Antiguo 04/07/2019, 11:20
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Llamar a imagen redimensionada en un thumbnail.php desde su html src

Supongo que será problema de rutas. Usa el inspector de elementos para ver las propiedades de la imagen y saber si se está cargando el php en la ubicación correcta o no.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 04/07/2019, 11:41
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Llamar a imagen redimensionada en un thumbnail.php desde su html src

Cita:
Iniciado por kahlito Ver Mensaje
Hola de nuevo.

Vuelvo a recuperar este tema ya que sigo sin resolverlo.

En cuanto a base64 no se si lo estoy haciendo correctamente y aun sigo sin saber como llamar o dar un ancho y alto previo para imprimir la imagen antes de codificarla.

Por otro lado retomando también la opción con header en redimensaionador.php veo que añadiendo en el código ob_clean(); entonces el archivo en sí aparece con la imagen pero cuando lo llamo desde el archivo real que lleva las imágenes sigue sin mostrarlo.

redimensionador.php

Código PHP:
Ver original
  1. <?php
  2. //Redimensionador
  3. //Opción 1 para cargar desde otro archivo.
  4. $nombre_archivo = "ajo_tradiciones.jpg";
  5. $rutaCarpetas = "views/images/$nombre_archivo";
  6.  
  7. $img = imagecreatefromjpeg($rutaCarpetas);
  8. $imgs = getimagesize($rutaCarpetas);
  9.  
  10.  
  11. $w = $imgs[0];
  12. $h = $imgs[1];
  13.  
  14.  
  15. $escala_w = 70/$w;
  16. $escala_h = 70/$h;
  17.  
  18. $nuevo_ancho = floor($w*$escala_w);
  19. $nuevo_alto = floor($h*$escala_h);
  20.  
  21. $tp = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  22.  
  23. imagecopyresampled($tp, $img, 0,0,0,0, 70, 70, $w, $h);
  24.  
  25. ob_clean();//Añadiendo ob_clean logro que online se muestre la imagen.
  26. //Con esta opción logro verla en pantalla con el nuevo tamaño 70x70
  27. Header("Content-type: image/jpeg");
  28. imagejpeg($tp, NULL, 100);
  29.  
  30. ?>

Ahora si puedo verla en el servidor online con la pantalla negra y la imagen en el centro, pero cuando la quiero llamar desde el archivo real que cargará la imagen, en este caso crop-cargador.php en el servidor online sigue sin aparecer:

Código HTML:
<p>Opción redimensionada desde archivo externo</p>
<img src="redimensionador.php" />
<p>Opción redimensionada desde archivo externo desde la ruta de carpetas</p>
<img src="views/modules/redimensionador.php" /> 
¿Qué estoy haciendo mal?

Saludos.
usa rutas ABSOLUTAS, para descargar el problema de RUTA BASE de php que suelen a veces ser mal configurados de parte del servidor
cambia
Código PHP:
$rutaCarpetas "views/images/$nombre_archivo"
por

Código PHP:
$rutaCarpetas __DIR__."/views/images/$nombre_archivo"
o
Código PHP:
$rutaCarpetas "c:/path/principal"."/views/images/$nombre_archivo"
siendo "c:/path/principal" un ejemplo de tu PATH principal
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #9 (permalink)  
Antiguo 04/07/2019, 15:32
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Llamar a imagen redimensionada en un thumbnail.php desde su html src

Buenas tuadmin

La verdad es que había usado algo parecido donde me daba la ruta absoluta entera del servidor

Código PHP:
Ver original
  1. $url = Ruta::ctrRuta(); //-> Aquí cargaba la ruta de la url original https://web.com/
  2.  
  3. $rutaCarpetas = $url."views/images/$nombre_archivo";
  4.  
  5. echo $rutaCarpetas;

Pero no me salía.

Tambien he probado tu nuevo ejemplo y sigue igual, no termina de cargar:

Código PHP:
Ver original
  1. $rutaCarpetas = __DIR__."/views/images/$nombre_archivo";  
  2.  
  3. echo "<p>Aquí muestro la ruta carpetas</p>";
  4.  
  5. echo $rutaCarpetas;

La verdad es que solo pasa ahora en este archivo al cargar el anterior dentro.

¿Alguna otra sugerencia?

De nuevo gracias, saludos.
  #10 (permalink)  
Antiguo 04/07/2019, 23:13
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Llamar a imagen redimensionada en un thumbnail.php desde su html src

Dos cosas a tener en cuenta:

1. Cuando incluyes el redimensionador en una etiqueta img la ruta debe ser url, de preferencia absoluta, algo como http://dominio.com/carpeta/script.php?var1=val1

2. En el script para redimensionar la ruta NO puede ser URL, en teoría es posible, mas no recomendable porque en la mayoría de los casos hay que modificar la configuración de PHP. Algo como /public_html/carpeta

HTML para cargar imágenes:
Código PHP:
Ver original
  1. <?php
  2. $url = 'http://dominio.com/views/modules/';
  3. ?>
  4. <p>Opción redimensionada desde archivo externo</p>
  5. <img src="<?php echo $url; ?>redimensionador.php" />
  6. <p>Opción redimensionada desde archivo externo desde la ruta de carpetas</p>
  7. <img src="<?php echo $url; ?>redimensionador.php" />

PHP Para redimensionar:
Código PHP:
Ver original
  1. <?php
  2. //Redimensionador
  3. //Opción 1 para cargar desde otro archivo.
  4. $nombre_archivo = "ajo_tradiciones.jpg";
  5. $rutaCarpetas = "/public_html/views/images/$nombre_archivo";

Lo ideal es que puedas obtener las rutas absolutas URL y de disco para todo el proyecto, no solo para esto y ten por seguro que te va a ahorrar muchos dolores de cabeza cada que necesites generar un enlace o leer un archivo.
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 05/07/2019, 09:48
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Llamar a imagen redimensionada en un thumbnail.php desde su html src

Hola de nuevo Triby.

En realidad creo que es lo que estaba haciendo como indico en mi último ejemplo, en crop-cargador.php tanto como en el proyecto en la plantilla tengo esta función que carga siempre en la variable $url la ruta absoluta.

Código PHP:
Ver original
  1. $url = Ruta::ctrRuta(); //-> Aquí cargo la ruta de la url original https://dominioweb.com/
Código HTML:
Ver original
  1. <p>Opción redimensionada desde archivo externo desde la ruta absoluta url de carpetas</p>
  2. <img src="<?php echo $url ?>views/modules/redimensionador.php" />

es decir que practicamente utiliza lo mismo que tu nuevo ejemplo

Código PHP:
Ver original
  1. $url = 'http://dominio.com/views/modules/';

Luego en el ejemplo de redimensionador.php que utilizo para redimensionar lo tengo tal y como me has puesto el ejemplo pero sin public_html ya que este servidor no reconoce esa ruta;

Código PHP:
<?php
//Redimensionador
//Opción 1 para cargar desde otro archivo.
$nombre_archivo "ajo_tradiciones.jpg";
$rutaCarpetas "/public_html/views/images/$nombre_archivo";//No reconoce public_html o ruta absoluta desde aquí.
$rutaCarpetas "views/images/$nombre_archivo";//Si reconoce y carga la imagen si solo cargo el archivo redimensionador.php
?>
He probado tus ejemplos por si acaso pero en realidad me sigue dando el mismo error.

Creo que puede ser un problema con la salida y entrada de Header o cabeceras. POr ejemplo en el template tengo al principio ob_start() y al final ob_end_flush() y si los quito para hacer pruebas el archivo.

Código HTML:
����JFIF����;��$���!����}Q��,�S��$�,xk��aa�Y�v��/[�l�Uŝ�Σ�\O,J�4�6�v�c�kqr���U~$����o��G���o Ƒ�_��Zm�U�����[��B�Ż�B����Cw߬7v�l�M��xu��.KK>����T��h��O ����*�y��R��h��)>Eo�?�"�l^S�x Ys�S���V��p���4�eR<�|��Z�����&�$~��>1�c�o|���6��#H��$��]w��~/�f��YxSN�u#u�#�%���i��ۄ�խ���6Ѻ����KC�<	����me�'H��&��OX�[��y <[{��k�+u՞�{��>Ҵ�q�F�_K�U�,��}s���Γ�u�X��f� ���x��S�K�/a��5�d> ��1�;Aq����[R���;�V��E��.Q_�۟x�'�o�^յ}�υu���E�'����ږ���u�ˉ����i���E�%�����i�{y6�߫bxs/���|
¿Podría ser por eso?

Voy a seguir intentándolo, gracias por tu ayuda.

Por cierto, ¿podría hacer algo así con javascript?, no se si sería mejor opción pero por si acaso contemplaría otras opciones.

Saludos.

Última edición por kahlito; 05/07/2019 a las 09:52 Razón: Posibilidad de hacer lo mismo con javascript.
  #12 (permalink)  
Antiguo 05/07/2019, 14:33
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Llamar a imagen redimensionada en un thumbnail.php desde su html src

Código PHP:
Ver original
  1. $rutaCarpetas = "views/images/$nombre_archivo";//Si reconoce y carga la imagen si solo cargo el archivo redimensionador.php

Tal vez lo reconoce porque redimensionador.php seguramente está en el mismo nivel que views, pero el script de tu proyecto está en una ruta diferente.

Entonces, la solución sería:
Código PHP:
Ver original
  1. $rutaCarpetas = "/carpeta_raiz/views/images/$nombre_archivo";

Solo remplaza /carpeta_raiz/ con la ruta absoluta de tu proyecto y listo.

Ahora, no entiendo cómo es que al no usar ob_* te aparezca esa salida, es como si quisieras mostrar la imagen junto con el HTML.
__________________
- León, Guanajuato
- GV-Foto
  #13 (permalink)  
Antiguo 06/07/2019, 09:57
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Llamar a imagen redimensionada en un thumbnail.php desde su html src

Cita:
Iniciado por tuadmin Ver Mensaje
usa rutas ABSOLUTAS, para descargar el problema de RUTA BASE de php que suelen a veces ser mal configurados de parte del servidor
cambia
Código PHP:
$rutaCarpetas "views/images/$nombre_archivo"
por

Código PHP:
$rutaCarpetas __DIR__."/views/images/$nombre_archivo"
o
Código PHP:
$rutaCarpetas "c:/path/principal"."/views/images/$nombre_archivo"
siendo "c:/path/principal" un ejemplo de tu PATH principal
Pues sí, estabas en lo cierto, haciendo varios cambios creo que por fin lo consigo.

Cita:
Iniciado por Triby Ver Mensaje
Código PHP:
Ver original
  1. $rutaCarpetas = "views/images/$nombre_archivo";//Si reconoce y carga la imagen si solo cargo el archivo redimensionador.php

Tal vez lo reconoce porque redimensionador.php seguramente está en el mismo nivel que views, pero el script de tu proyecto está en una ruta diferente.

Entonces, la solución sería:
Código PHP:
Ver original
  1. $rutaCarpetas = "/carpeta_raiz/views/images/$nombre_archivo";

Solo remplaza /carpeta_raiz/ con la ruta absoluta de tu proyecto y listo.

Ahora, no entiendo cómo es que al no usar ob_* te aparezca esa salida, es como si quisieras mostrar la imagen junto con el HTML.
Lo mismo digo, estabas en lo cierto y al hacer dicho cambio en esa ruta absoluta del servidor ya salen las imágenes.

Al entrar ayer en el servidor busqué la ruta absoluta y era algo así:

Cita:
Ruta relativa:
/

Ruta absoluta:
/k-----/homepages/30/xxxxxx/htdocs/ (por ejemplo)
Entonces a partir de ahi he retomado pruebas con esa misma ruta, don __DIR__ y con $_SERVER["DOCUMENT_ROOT"]

Php para redimensionar
redimensionador.php

Código PHP:
Ver original
  1. <?php
  2. //nombre del archivo
  3. $nombre_archivo = "ajo_tradiciones.jpg";
  4. //Ruta relativa de carpetas.
  5. $rutaCarpetas = "views/images/$nombre_archivo"; //Carga
  6. //Ruta absoluta completa del servidor
  7. $rutaCarpetas =/k-----/homepages/30/xxxxxx/htdocs/views/images/$nombre_archivo"; // Carga
  8. //Ruta absoluta desde homepages del servidor
  9. $rutaCarpetas ="/homepages/30/xxxxxx/htdocs/views/images/$nombre_archivo"; //Carga
  10. //Ruta absoluta con DIR desde el servidor
  11. $rutaCarpetas = __DIR__."/views/images/$nombre_archivo"; //No carga
  12. //Ruta absoluta desde el directorio Raiz del servidor.
  13. $rutaRaiz = $_SERVER["DOCUMENT_ROOT"];
  14. $rutaCarpetas = $rutaRaiz."/views/images/$nombre_archivo";//Carga
  15. ?>

Html para cargar imágenes.
crop-cargador.php

Código HTML:
Ver original
  1. <p>Opción redimensionada desde archivo externo (No carga)</p>
  2. <img src="redimensionador.php" />
  3. <p>Opción redimensionada desde archivo externo desde la ruta relativa de carpetas (carga)</p>
  4. <img src="views/modules/redimensionador.php" />
  5. <p>Opción redimensionada desde archivo externo desde la ruta absoluta url de carpetas (carga)</p>
  6. <img src="<?php echo $url ?>views/modules/redimensionador.php" />
  7. <p>Opción utilizando ruta absoluta completa del servidor (no carga)</p>
  8. <img src="/k-----/homepages/30/xxxxxx/htdocs/views/modules/redimensionador.php" />
  9. <p>Opción utilizando ruta raiz absoluta del servidorcon DIR (carga)</p>
  10. <img src="<?php __DIR__ ?>views/modules/redimensionador.php" />
  11. <p>Opción utilizando ruta raiz absoluta del servidor (carga)</p>
  12. <img src="<?php $_SERVER["DOCUMENT_ROOT"]; ?>views/modules/redimensionador.php" />

Por lo tanto pruebo así y creo que funciona bien:

redimensionador.php

Código PHP:
Ver original
  1. <?php
  2. //Opción 1 para cargar desde otro archivo.
  3. //Nombre del archivo
  4. $nombre_archivo = "ajo_tradiciones.jpg";
  5. //Ruta absoluta desde el directorio Raiz del servidor.
  6. $rutaRaiz = $_SERVER["DOCUMENT_ROOT"];
  7. $rutaCarpetas = $rutaRaiz."/views/images/$nombre_archivo";//Carga
  8.  
  9. $img = imagecreatefromjpeg($rutaCarpetas);
  10. $imgs = getimagesize($rutaCarpetas);
  11.  
  12. $w = $imgs[0];
  13. $h = $imgs[1];
  14.  
  15. $escala_w = 70/$w;
  16. $escala_h = 70/$h;
  17.  
  18. $nuevo_ancho = floor($w*$escala_w);
  19. $nuevo_alto = floor($h*$escala_h);
  20.  
  21. $tp = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  22.  
  23. imagecopyresampled($tp, $img, 0,0,0,0, 70, 70, $w, $h);
  24.  
  25. //Con esta opción logro verla en pantalla con el nuevo tamaño 70x70
  26. Header("Content-type: image/jpeg");
  27. imagejpeg($tp, NULL, 100);
  28.  
  29. ?>

crop-cargador.php

Código HTML:
Ver original
  1. <?php $url = Ruta::ctrRuta(); // https://dominio.com/ ?>
  2. <p>Cargo la imagen desde la ruta de la url absoluta.</p>
  3. <img src="<?php echo $url ?>views/modules/redimensionador.php" />

Finalmente he utilizado $_SERVER["DOCUMENT_ROOT"]; ya que me devuelve la ruta absoluta completa del servidor actual, no se si será lo más seguro en este caso ¿Con eso ya estaría solucionado?

Gracias de nuevo por vuestra gran ayuda, saludos.

Etiquetas: html, src, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:42.