Ver Mensaje Individual
  #5 (permalink)  
Antiguo 28/06/2019, 12:21
Avatar de kahlito
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.