nombreImagenDestino = md5(uniqid(mt_rand(), true)). ".jpg"; //RECORREMOS LOS FORMATOS foreach($aDimensiones as $key => $dimension) { //comprobamos si el directorio destino tiene barra final,si no la tiene la ponemos y concatenamos el formato $dirDestino = $this->componerDirectorioDestino($directorioDestino,$dimension['ancho'],$dimension['alto']); //comprobamos si existe el directorio destino, si no lo creamos if($this->comprobarDirectorio($dirDestino,0777)) { //comenzamos el proceso de generación de la imagen $this->generarImagen($imagenOrigen,$directorioImagenRaw,$dirDestino,$dimension['ancho'],$dimension['alto'],$calidadImagenDestino,$modoRedimensionamiento); } } } //------------------------------------------------------------------------------------------ // MÉTODO QUE NOS PERMITE GENERAR UNA IMAGEN //------------------------------------------------------------------------------------------ function generarImagen($imagenRaw,$directorioImagenRaw,$directorioDestino,$dimensionAncho,$dimensionAlto,$calidadImagenDestino,$modoRedimensionamiento) { //obtenemos el path completo a la imagen raw $directorioImagenRaw = $this->andirSlash($directorioImagenRaw); $imagenRaw=$directorioImagenRaw.$imagenRaw; //------------------------------------------------------------------------------------------ // SEGÚN EL MODO DE REDIMENSIONAMIENTO PROCESAMOS DE UNA U OTRA FORMA LA IMAGEN //------------------------------------------------------------------------------------------ switch ($modoRedimensionamiento) { case "resize_then_crop": $this->resize_then_crop($imagenRaw,$directorioDestino,$this->nombreImagenDestino,$dimensionAncho,$dimensionAlto,$calidadImagenDestino,/*rgb*/"255","255","255"); break; case 'resize_centrada': $this->resize_centrada($imagenRaw,$directorioDestino,$this->nombreImagenDestino,$dimensionAncho,$dimensionAlto,$calidadImagenDestino,/*rgb*/"255","255","255"); break; } } //------------------------------------------------------------------------------------------ // // MÉTODOS DE REDIMENSIONAMIENTO DE IMAGENES // //------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ // MÉTODO RESIZE THEN CROP //------------------------------------------------------------------------------------------ function resize_then_crop($imagenRaw,$directorioDestino,$nombreImagenDestino,$dimensionAnchoDestino,$dimensionAltoDestino,$calidadImagenDestino,$red,$green,$blue, $crop = false) { //obtenemos la información de la imagen origen $aAtributosImagen = @getimagesize($imagenRaw); //sacamos los atributos de la imagen $this->ancho = $aAtributosImagen[0]; $this->alto = $aAtributosImagen[1]; $this->mimeType = $aAtributosImagen['mime']; $this->peso = filesize($imagenRaw); //reservamos la memoria para el proceso ini_get("memory_limit"); ini_set("memory_limit",$this->memory_limit); ini_set("max_execution_time",$this->max_execution_time); //vemos de donde redimensionamos la imagen $aDimensaionesDestinoImagen = $this->calculoProporcionalImagenDestino($this->ancho,$this->alto,$dimensionAnchoDestino,$dimensionAltoDestino); $pImage = $this->imageCreateFrom($this->mimeType,$imagenRaw); $thumb = imagecreatetruecolor($dimensionAnchoDestino , $dimensionAltoDestino); $bgcolor = imagecolorallocate($thumb, $red, $green, $blue); ImageFilledRectangle($thumb, 0, 0, $width, $height, $bgcolor); imagealphablending($thumb, true); imagecopyresampled($thumb, $pImage, 0, 0, 0, 0,$aDimensaionesDestinoImagen['ancho'], $aDimensaionesDestinoImagen['alto'], $this->ancho, $this->alto); //--------------------------------------------------------------------------- //INSERTAMOS LA MARCA DE AGUA //--------------------------------------------------------------------------- if($this->watermark!='') { $watermark = $_SERVER['DOCUMENT_ROOT'].$this->watermark; $im = imagecreatefrompng($watermark); $waterSize = @getimagesize($watermark); $factorRedimensaoinamiento = 500; // Tenemos que redimensionar la marca de agua, dependiendo de la imagen destino $ancho = ($dimensionAnchoDestino * $waterSize[0])/$factorRedimensaoinamiento; $alto = ($dimensionAltoDestino * $waterSize[1])/$factorRedimensaoinamiento; $logo = imagecreatetruecolor($ancho , $alto); $bgcolor = imagecolorallocate($logo, $red, $green, $blue); $transparent_color = imagecolorallocate($logo, 255, 0, 0); imagecolortransparent($logo, $transparent_color); ImageFilledRectangle($logo, 0, 0, $ancho, $alto, $transparent_color); imagealphablending($logo, false); imagecopyresampled($logo, $im, 0, 0, 0, 0,$ancho, $alto, $waterSize[0], $waterSize[1]); } //--------------------------------------------------------------------------- //fusionamos el logo y la imagen imagecopy($thumb, $logo, (imagesx($thumb)/2)-(imagesx($logo)/2), (imagesy($thumb)/2)-(imagesy($logo)/2), 0, 0, imagesx($logo), imagesy($logo)); if ($nombreImagenDestino !="") { $archivoDestino = $this->andirSlash($directorioDestino).$nombreImagenDestino; imagejpeg($thumb,$archivoDestino,$calidadImagenDestino); // guardamos el archivo generado } } //------------------------------------------------------------------------------------------ // MÉTODO RESIZE THEN CROP //------------------------------------------------------------------------------------------ function resize_centrada($imagenRaw,$directorioDestino,$nombreImagenDestino,$dimensionAnchoDestino,$dimensionAltoDestino,$calidadImagenDestino,$red,$green,$blue, $crop = false) { //obtenemos la información de la imagen origen $aAtributosImagen = @getimagesize($imagenRaw); //sacamos los atributos de la imagen $this->ancho = $aAtributosImagen[0]; $this->alto = $aAtributosImagen[1]; $this->mimeType = $aAtributosImagen['mime']; $this->peso = filesize($imagenRaw); //reservamos la memoria para el proceso ini_get("memory_limit"); ini_set("memory_limit",$this->memory_limit); ini_set("max_execution_time",$this->max_execution_time); //vemos de donde redimensionamos la imagen $aDimensaionesDestinoImagen = $this->calculoProporcionalImagenDestino($this->ancho,$this->alto,$dimensionAnchoDestino,$dimensionAltoDestino); $pImage = $this->imageCreateFrom($this->mimeType,$imagenRaw); $thumb = imagecreatetruecolor($dimensionAnchoDestino , $dimensionAltoDestino); $bgcolor = imagecolorallocate($thumb, $red, $green, $blue); ImageFilledRectangle($thumb, 0, 0, $width, $height, $bgcolor); imagealphablending($thumb, true); $destX = ($dimensionAnchoDestino - $aDimensaionesDestinoImagen['ancho']) / 2; $destY = ($dimensionAltoDestino - $aDimensaionesDestinoImagen['alto']) / 2; imagecopyresampled($thumb, $pImage, $destX, $destY, 0, 0,$aDimensaionesDestinoImagen['ancho'], $aDimensaionesDestinoImagen['alto'], $this->ancho, $this->alto); //--------------------------------------------------------------------------- //INSERTAMOS LA MARCA DE AGUA //--------------------------------------------------------------------------- if($this->watermark!='') { $watermark = $_SERVER['DOCUMENT_ROOT'].$this->watermark; $im = imagecreatefrompng($watermark); $waterSize = @getimagesize($watermark); $factorRedimensaoinamiento = 500; // Tenemos que redimensionar la marca de agua, dependiendo de la imagen destino $ancho = ($dimensionAnchoDestino * $waterSize[0])/$factorRedimensaoinamiento; $alto = ($dimensionAltoDestino * $waterSize[1])/$factorRedimensaoinamiento; $logo = imagecreatetruecolor($ancho , $alto); $bgcolor = imagecolorallocate($logo, $red, $green, $blue); $transparent_color = imagecolorallocate($logo, 255, 0, 0); imagecolortransparent($logo, $transparent_color); ImageFilledRectangle($logo, 0, 0, $ancho, $alto, $transparent_color); imagealphablending($logo, false); imagecopyresampled($logo, $im, 0, 0, 0, 0,$ancho, $alto, $waterSize[0], $waterSize[1]); } //--------------------------------------------------------------------------- //fusionamos el logo y la imagen imagecopy($thumb, $logo, (imagesx($thumb)/2)-(imagesx($logo)/2), (imagesy($thumb)/2)-(imagesy($logo)/2), 0, 0, imagesx($logo), imagesy($logo)); if ($nombreImagenDestino !="") { $archivoDestino = $this->andirSlash($directorioDestino).$nombreImagenDestino; imagejpeg($thumb,$archivoDestino,$calidadImagenDestino); // guardamos el archivo generado } } //------------------------------------------------------------------------------------------ // MÉTODO PARA OBTENER LA IMAGEN EN MEMORIA //------------------------------------------------------------------------------------------ function imageCreateFrom($format,$imagenRaw) { switch($format) { case 'image/jpeg': $image = imagecreatefromjpeg($imagenRaw); break; case 'image/gif'; $image = imagecreatefromgif($imagenRaw); break; case 'image/png': $image = imagecreatefrompng($imagenRaw); break; case 'image/bmp': $image = ImageCreateFromBMP($imagenRaw); break; } return $image; } //------------------------------------------------------------------------------------------ // MÉTODO PARA VER POR DONDE HEMOS DE REDIMENSIONAR LA IMAGEN //------------------------------------------------------------------------------------------ function calculoProporcionalImagenDestino($dimensionAnchoImagenOrigen,$dimensionAltoImagenOrigen,$dimensionAnchoImagenDestino,$dimensionAltoImagenDestino) { $aDimensionesDestino = array(); //para calcular que parte de la imagen origen redimensionar //restamos los anchos y altos de origen y destino y el que sea menor //es el que tenemos que adecuar al destino, el otro se hace proporcional //lo hacemos en valor absoluto, por si la imagen origen es mas pequeña que la destino $distanciaAncho = abs($dimensionAnchoImagenOrigen-$dimensionAnchoImagenDestino); $distanciaAlto = abs($dimensionAltoImagenOrigen-$dimensionAltoImagenDestino); if($distanciaAncho>$distanciaAlto) { $aDimensionesDestino['alto'] = $dimensionAltoImagenDestino; $aDimensionesDestino['ancho'] = $dimensionAnchoImagenOrigen*$dimensionAltoImagenDestino/$dimensionAltoImagenOrigen; } else { $aDimensionesDestino['alto'] = $dimensionAnchoImagenDestino*$dimensionAltoImagenOrigen/$dimensionAnchoImagenOrigen; $aDimensionesDestino['ancho'] = $dimensionAnchoImagenDestino; } return $aDimensionesDestino; } //------------------------------------------------------------------------------------------ // MÉTODO QUE NOS DEVUELVE EL DIRECTORIO DESTINO CON LAS CARPETAS DE FORMATO CREADAS //------------------------------------------------------------------------------------------ function componerDirectorioDestino($directorio,$dimensionAncho,$dimensionAlto) { //si no tiene barra final, la ponemos $directorio = $this->andirSlash($directorio); $directorio = $directorio.$dimensionAncho.'x'.$dimensionAlto; return $directorio; } //------------------------------------------------------------------------------------------ // MÉTODO PARA ANADIR UNA BARRA AL DIRECTORIO //------------------------------------------------------------------------------------------ function andirSlash($directorio) { //si no tiene barra final, la ponemos if ($directorio[strlen($directorio)-1] != "/") { $directorio .= '/'; } return $directorio; } //------------------------------------------------------------------------------------------ // MÉTODO PARA COMPROBAR SI EXISTE EL DIRECTORIO, SI NO LO CREA //------------------------------------------------------------------------------------------ function comprobarDirectorio($path,$permisos) { $procesado = false; //comprobamos que el path destino es un directorio y existe if(!is_dir($path)) { //si no existe le creamos y damos permisos if(mkdir($path,$permisos)) { //forzamos los permisos, mkdir no los ejecuta correctamente a veces if(chmod($path, $permisos)) { $procesado = true; } } } else { $procesado = true; } return $procesado; } } ?> seccion = $seccion; $this->pagina = $pagina; $this->url = $url; $this->idClase = $clase; $this->numTotalResultados = $numTotalResultados; $this->numResultadosPorPagina = $numResultadosPorPagina; //calculamos el numero total de paginas $this->totalPaginas = ceil($numTotalResultados/$numResultadosPorPagina); //echo 'total páginas '.$this->totalPaginas.'
'; //calculamos el numero de grupos de paginas $this->numGrupos = ceil($this->totalPaginas/$this->numNumerosVisibles); //echo 'total grupos '.$this->numGrupos.'
'; //pagina actual $this->paginaActual = $this->pagina/$this->numResultadosPorPagina+1; //creamos un array cuyo indice sea el grupo y los valores las paginas for($n=0;$n<$this->totalPaginas;$n++) { //dividimos la pagina entre el número de elementos visibles $grupo = floor($n/$this->numNumerosVisibles); $this->aGruposPaginas[$grupo][] = $n; } //var_dump($this->aGruposPaginas); //vamos a obtener en que grupo esta la pagina actual for($n=0;$naGruposPaginas);$n++) { if (in_array($this->paginaActual-1, $this->aGruposPaginas[$n])) $this->grupoActivo = $n; } } //------------------------------------------------------------------- // Funcion que renderiza el paginador //------------------------------------------------------------------- function render() { require $_SERVER['DOCUMENT_ROOT'].'/includes/recursos/locales/'.LOCALES.'.php'; if($this->numTotalResultados > 0 && $this->totalPaginas > 1) { echo '
'.$this->numTotalResultados.' '.$LANG['paginadorRegistros'].'. '.$LANG['paginadorPagina'].' '.$this->paginaActual.'/'.$this->totalPaginas.'
'; } } } ?> renderMetatags(); ?>

https://www.ebay.com.au/itm/362570145545 100% brand new and high quality. HDMI 4K High Resolution: HDMI male-to-female adapter supports up to 4K resolution video at 30Hz and 3840X2160P. Delivering crystal clear, high quality video and audio. Perfect for presentations, movie nights and more! 4 in 1 USB C Hub: USB3.0 + USB2.0 + HDMI + PD Charging Port. Full Compatibility. It is universal to most device with a USB-C connection. Aluminum alloy texture. Better feeling and heat dissipation. Lightweight and pocket size. You can put it into your pocket and tack it to. Everywhere as your like and enjoy the Switch games or Samsung DEX mode in TV mode. USB C 3.1 To USB 3.0/2.0: The USB type-c docking station can extend your laptop/phone to USB 3.0 ports with 5Gpbs transfer speed. Plug and play. No extra driver is needed.