uploads una subir subido subida solucionar solo problema podido parte mover imagenes imagen error content cargar archivo php upload image-manipulation temporary-files

una - Carga temporal de archivo PHP no válida Recurso de imagen



subir video a wordpress error http (1)

Hola, tengo una clase para cambiar el tamaño de las imágenes (resizeManager.php):

Class ResizeManager { // *** Class variables private $image; private $width; private $height; private $imageResized; function __construct($fileName) { // *** Open up the file $this->image = $this->openImage($fileName); // *** Get width and height $this->width = imagesx($this->image); $this->height = imagesy($this->image); } ## -------------------------------------------------------- private function openImage($file) { // *** Get extension $extension = strtolower(strrchr($file, ''.'')); switch($extension) { case ''.jpg'': case ''.jpeg'': $img = @imagecreatefromjpeg($file); break; case ''.gif'': $img = @imagecreatefromgif($file); break; case ''.png'': $img = @imagecreatefrompng($file); break; default: $img = false; break; } return $img; } ## -------------------------------------------------------- public function resizeImage($newWidth, $newHeight, $option="auto") { // *** Get optimal width and height - based on $option $optionArray = $this->getDimensions($newWidth, $newHeight, $option); $optimalWidth = $optionArray[''optimalWidth'']; $optimalHeight = $optionArray[''optimalHeight'']; // *** Resample - create image canvas of x, y size $this->imageResized = imagecreatetruecolor($optimalWidth, $optimalHeight); imagecopyresampled($this->imageResized, $this->image, 0, 0, 0, 0, $optimalWidth, $optimalHeight, $this->width, $this->height); // *** if option is ''crop'', then crop too if ($option == ''crop'') { $this->crop($optimalWidth, $optimalHeight, $newWidth, $newHeight); } } ## -------------------------------------------------------- private function getDimensions($newWidth, $newHeight, $option) { switch ($option) { case ''exact'': $optimalWidth = $newWidth; $optimalHeight= $newHeight; break; case ''portrait'': $optimalWidth = $this->getSizeByFixedHeight($newHeight); $optimalHeight= $newHeight; break; case ''landscape'': $optimalWidth = $newWidth; $optimalHeight= $this->getSizeByFixedWidth($newWidth); break; case ''auto'': $optionArray = $this->getSizeByAuto($newWidth, $newHeight); $optimalWidth = $optionArray[''optimalWidth'']; $optimalHeight = $optionArray[''optimalHeight'']; break; case ''crop'': $optionArray = $this->getOptimalCrop($newWidth, $newHeight); $optimalWidth = $optionArray[''optimalWidth'']; $optimalHeight = $optionArray[''optimalHeight'']; break; } return array(''optimalWidth'' => $optimalWidth, ''optimalHeight'' => $optimalHeight); } ## -------------------------------------------------------- private function getSizeByFixedHeight($newHeight) { $ratio = $this->width / $this->height; $newWidth = $newHeight * $ratio; return $newWidth; } private function getSizeByFixedWidth($newWidth) { $ratio = $this->height / $this->width; $newHeight = $newWidth * $ratio; return $newHeight; } private function getSizeByAuto($newWidth, $newHeight) { if ($this->height < $this->width) // *** Image to be resized is wider (landscape) { $optimalWidth = $newWidth; $optimalHeight= $this->getSizeByFixedWidth($newWidth); } elseif ($this->height > $this->width) // *** Image to be resized is taller (portrait) { $optimalWidth = $this->getSizeByFixedHeight($newHeight); $optimalHeight= $newHeight; } else // *** Image to be resizerd is a square { if ($newHeight < $newWidth) { $optimalWidth = $newWidth; $optimalHeight= $this->getSizeByFixedWidth($newWidth); } else if ($newHeight > $newWidth) { $optimalWidth = $this->getSizeByFixedHeight($newHeight); $optimalHeight= $newHeight; } else { // *** Sqaure being resized to a square $optimalWidth = $newWidth; $optimalHeight= $newHeight; } } return array(''optimalWidth'' => $optimalWidth, ''optimalHeight'' => $optimalHeight); } ## -------------------------------------------------------- private function getOptimalCrop($newWidth, $newHeight) { $heightRatio = $this->height / $newHeight; $widthRatio = $this->width / $newWidth; if ($heightRatio < $widthRatio) { $optimalRatio = $heightRatio; } else { $optimalRatio = $widthRatio; } $optimalHeight = $this->height / $optimalRatio; $optimalWidth = $this->width / $optimalRatio; return array(''optimalWidth'' => $optimalWidth, ''optimalHeight'' => $optimalHeight); } ## -------------------------------------------------------- private function crop($optimalWidth, $optimalHeight, $newWidth, $newHeight) { // *** Find center - this will be used for the crop $cropStartX = ( $optimalWidth / 2) - ( $newWidth /2 ); $cropStartY = ( $optimalHeight/ 2) - ( $newHeight/2 ); $crop = $this->imageResized; //imagedestroy($this->imageResized); // *** Now crop from center to exact requested size $this->imageResized = imagecreatetruecolor($newWidth , $newHeight); imagecopyresampled($this->imageResized, $crop , 0, 0, $cropStartX, $cropStartY, $newWidth, $newHeight , $newWidth, $newHeight); } ## -------------------------------------------------------- public function saveImage($savePath, $imageQuality="100") { // *** Get extension $extension = strrchr($savePath, ''.''); $extension = strtolower($extension); switch($extension) { case ''.jpg'': case ''.jpeg'': if (imagetypes() & IMG_JPG) { imagejpeg($this->imageResized, $savePath, $imageQuality); } break; case ''.gif'': if (imagetypes() & IMG_GIF) { imagegif($this->imageResized, $savePath); } break; case ''.png'': // *** Scale quality from 0-100 to 0-9 $scaleQuality = round(($imageQuality/100) * 9); // *** Invert quality setting as 0 is best, not 9 $invertScaleQuality = 9 - $scaleQuality; if (imagetypes() & IMG_PNG) { imagepng($this->imageResized, $savePath, $invertScaleQuality); } break; // ... etc default: // *** No extension - No save. break; } imagedestroy($this->imageResized); } }

En mi página (mypage.php) quiero cambiar el tamaño de la imagen cargada solo si su ancho es> 800px o alto> 600px.

Entonces escribí:

list($width, $height, $type, $attr) = getimagesize($_FILES[''pictures''][''tmp_name''][$number]); if($width>800 || $height>600) { $resizemgr = new ResizeManager($_FILES[''pictures''][''tmp_name''][$number]); //then the actual resizing [...] } else $ret=@move_uploaded_file($_FILES[''pictures''][''tmp_name''][$number],$destinationFile);

Pero recibo estos errores

Warning: imagesx(): supplied argument is not a valid Image resource in resizeManager.php Warning: imagesy(): supplied argument is not a valid Image resource in resizeManager.php

¿Puedo apuntar a un archivo temporal de esta manera?

Gracias

luca


Prueba a continuación Ejemplo:

<form method="post" enctype="multipart/form-data" action=""> <input type="file" name="file" /> <div class="td" style="width: 100%; text-align: left;"><button type="submit">OK</button></div> </form> <?php if( isset( $_FILES[''file''] ) ) { $img = file_get_contents( $_FILES[''file''][''tmp_name''] ); $image = imagecreatefromstring( $img ); echo imagesx( $image ); } ?>