Hola bueno miren queria darles essta ayuda a todos los que trabajan con imagenes le di el nombre de microTutorial por que es mi primero y si tienes fallas me avisas porfavor soy principiante:
NOTA: La informacion la saque de toda parte asi que es un codigo Mixtura (Me refiero que ES CODIGO sacado de varios source)
TRATAMIENTO DE LA IMAGEN
Primero tenemos que aprender a tratar a la imagen con esta pagina lo que hacemos es redimensionar el tamaño y ajustarlo.
Nombre de la pagina img.inc.php
<?php
//TRATAMIENTO DE IMAGENES
//====================================
class somaImagen{
var $imagen_recurso; var $imagen_salida;
var $imagen_recurso_ancho; var $imagen_salida_ancho;
var $imagen_recurso_alto; var $imagen_salida_alto;
var $imagen_recurso_desde_x = 0; var $imagen_salida_desde_x = 0;
var $imagen_recurso_desde_y = 0; var $imagen_salida_desde_y = 0;
var $escala; var $imagen_imprimible;
var $rango_menor = 1;
var $rango_mayor = 1000;
function validarMedida($valor){
if ($valor>=($this->rango_menor) and $valor<$this->rango_mayor){
return $valor;
}else{
if($valor <= ($this->rango_menor-1) ){return ($this->rango_menor); }
if($valor>= $this->rango_mayor ){return $this->rango_mayor ; }
}
}
function crearImagen($imagen){
$this->imagen_recurso = $imagen;
$this->imagen_salida = imagecreatefromjpeg($this->imagen_recurso);
$this->imagen_recurso_ancho = imagesx($this->imagen_salida);
$this->imagen_recurso_alto = imagesy($this->imagen_salida);
}
function crearSalida($ancho,$alto){
$this->imagen_salida_ancho = $ancho;
$this->imagen_salida_alto = $alto;
$this->imagen_imprimible = imagecreatetruecolor($this->imagen_salida_ancho,$this->imagen_salida_alto);
imagecopyresampled(
$this->imagen_imprimible,
$this->imagen_salida,
$this->imagen_recurso_desde_x,
$this->imagen_recurso_desde_y,
$this->imagen_salida_desde_x,
$this->imagen_salida_desde_y,
$this->imagen_salida_ancho,
$this->imagen_salida_alto,
$this->imagen_recurso_ancho,
$this->imagen_recurso_alto
);
imagejpeg($this->imagen_imprimible, NULL,100);
imagedestroy($this->imagen_imprimible);
}
function Cuadro($lados,$imagen){
$lados=$this->validarMedida($lados);
$this->crearImagen($imagen);
if ( $this->imagen_recurso_ancho>= $this->imagen_recurso_alto )
{$this->escala=$lados/$this->imagen_recurso_ancho;}
else
{$this->escala=$lados/$this->imagen_recurso_alto;}
$this->crearSalida($this->imagen_recurso_ancho * $this->escala , $this->imagen_recurso_alto * $this->escala);
}
function AnchoMax($ancho,$imagen){
$ancho=$this->validarMedida($ancho);
$this->crearImagen($imagen);
$this->escala=$ancho/$this->imagen_recurso_ancho;
$this->crearSalida($this->imagen_recurso_ancho * $this->escala , $this->imagen_recurso_alto * $this->escala);
}
function AltoMax($alto,$imagen){
$alto=$this->validarMedida($alto);
$this->crearImagen($imagen);
$this->escala=$alto/$this->imagen_recurso_alto;
$this->crearSalida($this->imagen_recurso_ancho * $this->escala , $this->imagen_recurso_alto * $this->escala);
}
function Encuadrar($medida,$imagen,$alineacion){
$medida=$this->validarMedida($medida);
$this->crearImagen($imagen);
if ( $this->imagen_recurso_ancho <= $this->imagen_recurso_alto ){
$this->escala = $this->imagen_salida_ancho/$this->imagen_recurso_ancho;
if($alineacion!=0){
if($alineacion==1){
$this->imagen_salida_desde_y=($this->imagen_recurso_alto-$this->imagen_recurso_ancho);
}
if($alineacion==2){
$this->imagen_salida_desde_y=($this->imagen_recurso_alto-$this->imagen_recurso_ancho)/2;
}
}
$this->imagen_recurso_alto = $this->imagen_recurso_ancho;
}else {
$this->escala = $this->imagen_salida_alto/$this->imagen_recurso_alto;
if($alineacion!=0){
if($alineacion==1){
$this->imagen_salida_desde_x=($this->imagen_recurso_ancho-$this->imagen_recurso_alto);
}
if($alineacion==2){
$this->imagen_salida_desde_x=($this->imagen_recurso_ancho-$this->imagen_recurso_alto)/2;
}
}
$this->imagen_recurso_ancho = $this->imagen_recurso_alto;
}
$this->crearSalida($medida,$medida);
}
}
?>
Continuando........
Luego de realizar ese tratamiento lo que sigue es la carga a la base de datos, y la redimension de la imagen, lo que yo pude hacer, fue que en una sola pagina me cree un temporal mas la subida a la base de datos.
Subir imagen a la Base de Datos
Lo siguiente que se hace es crear la pagina que se encarga de la subida, como yo soy Linuxero pude hacer que se suba el servidor de la misma manera la imagen aver que les parece
<?php
// Constantes
# Altura de el thumbnail en píxeles
define("ALTURA", 100);
# Nombre del archivo temporal del thumbnail
//define("NAMETHUMB", "/tmp/thumbtemp"); //Esto en servidores Linux, en Windows podría ser:
define("NAMETHUMB", "D:/windows/temp/thumbtemp"); // y te olvidas de los problemas de permisos Bueno lo de D: es por que en mi portatil esta el sistema
# Servidor de base de datos
define("DBHOST", "localhost");
# nombre de la base de datos
define("DBNAME", "productos");
# Usuario de base de datos
define("DBUSER", "root");
# Password de base de datos
define("DBPASSWORD", "delirion");
// Mime types permitidos
$mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
// Variables de la foto
$name = $_FILES['form_foto']['name'];
$type = $_FILES['form_foto']['type'];
$tmp_name = $_FILES['form_foto']['tmp_name'];
$size = $_FILES['form_foto']['size'];
// Verificamos si el archivo es una imagen válida
if(!in_array($type, $mimetypes))
die("El archivo que subiste no es una imagen válida");
// Creando el thumbnail
switch($type) {
case $mimetypes[0]:
case $mimetypes[1]:
$img = imagecreatefromjpeg($tmp_name);
break;
case $mimetypes[2]:
$img = imagecreatefromgif($tmp_name);
break;
case $mimetypes[3]:
$img = imagecreatefrompng($tmp_name);
break;
}
$datos = getimagesize($tmp_name);
$ratio = ($datos[1]/ALTURA);
$ancho = round($datos[0]/$ratio);
$thumb = imagecreatetruecolor($ancho, ALTURA);
imagecopyresized($thumb, $img, 0, 0, 0, 0, $ancho, ALTURA, $datos[0], $datos[1]);
switch($type) {
case $mimetypes[0]:
case $mimetypes[1]:
imagejpeg($thumb, NAMETHUMB);
break;
case $mimetypes[2]:
imagegif($thumb, NAMETHUMB);
break;
case $mimetypes[3]:
imagepng($thumb, NAMETHUMB);
break;
}
// Extrae los contenidos de las fotos
# contenido de la foto original
$fp = fopen($tmp_name, "rb");
$tfoto = fread($fp, filesize($tmp_name));
$tfoto = addslashes($tfoto);
fclose($fp);
# contenido del thumbnail
$fp = fopen(NAMETHUMB, "rb");
$tthumb = fread($fp, filesize(NAMETHUMB));
$tthumb = addslashes($tthumb);
fclose($fp);
// Borra archivos temporales si es que existen
@unlink($tmp_name);
@unlink(NAMETHUMB);
// Guardamos todo en la base de datos
?>
NOTA Bueno con esto termina si necesitan algo o falta algo espero recibir sus criticas y me ayuden a mejorarlo o empeorarlo jajaaj gracias a todos saludos y porfavor sean compasivos es mi primer micro tutorial.... es mi primer bb lo puedo decir
Está interesante, pero si se llama microtutorial, es porque enseña a hacer las cosas, no solo poner código.
Por lo menos podrías poner algún que otro comentario.
Saludos!