{"id":28528,"date":"2021-05-27T12:25:00","date_gmt":"2021-05-27T09:25:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28528"},"modified":"2021-10-17T16:43:02","modified_gmt":"2021-10-17T13:43:02","slug":"cargar-y-cambiar-el-tamano-de-varias-imagenes-en-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/cargar-y-cambiar-el-tamano-de-varias-imagenes-en-laravel\/","title":{"rendered":"Cargar y cambiar el tama\u00f1o de varias im\u00e1genes en Laravel"},"content":{"rendered":"<p>Aparte de este blog, estoy ejecutando un <a href=\"https:\/\/www.youtube.com\/channel\/UCosi8Kv8-EPLt5TBJLlsWJA\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">canal de YouTube<\/a> donde comparto los videos tutoriales. Recientemente, uno de los suscriptores del canal de YouTube pregunt\u00f3 sobre c\u00f3mo cambiar el tama\u00f1o de varias im\u00e1genes en Laravel. Quieren cambiar el tama\u00f1o de varias im\u00e1genes de una vez. En este art\u00edculo, estudiamos c\u00f3mo cargar y cambiar el tama\u00f1o de varias im\u00e1genes en Laravel.<\/p>\n<p><a href=\"https:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Intervention Image<\/a> es una biblioteca de c\u00f3digo abierto que nos permite manipular im\u00e1genes. Voy a usar esta biblioteca para cambiar el tama\u00f1o de las im\u00e1genes.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20446-6081f2f1b1c63.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20446-6081f2f1b1c63.png\" alt=\"Cargar y cambiar el tama\u00f1o de varias im\u00e1genes en Laravel\" ><\/a><\/p>\n<h3>Empezando<\/h3>\n<p>Para lograr nuestro objetivo, debe instalar y configurar la biblioteca de im\u00e1genes de intervenci\u00f3n en el proyecto Laravel. Abra la terminal en el directorio ra\u00edz de su proyecto y ejecute el comando:<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Una vez instalada la biblioteca, abra el <code>config\/app.php<\/code>archivo y agregue proveedores de servicios, fachada en \u00e9l. Agregue los proveedores de servicios para este paquete a la <code>$providers<\/code>matriz.<\/p>\n<pre><code>InterventionImageImageServiceProvider::class,<\/code><\/pre>\n<p>Agregue la fachada a la <code>$aliases<\/code>matriz.<\/p>\n<pre><code>'Image' =&gt; InterventionImageFacadesImage::class,<\/code><\/pre>\n<p>A continuaci\u00f3n, necesitamos un directorio donde almacenamos nuestros archivos cargados. <a href=\"https:\/\/laravel.com\/docs\/master\/filesystem\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Filesystem<\/a> proporciona un disco p\u00fablico para almacenar los archivos. El disco p\u00fablico contiene archivos que son de acceso p\u00fablico. Encontrar\u00e1 los archivos cargados en la <code>storage\/app\/public<\/code>carpeta. Para acceder a estos archivos en la web, debe crear un enlace simb\u00f3lico desde <code>public\/storage<\/code>hasta <code>storage\/app\/public<\/code>.<\/p>\n<p>Crea un enlace simb\u00f3lico usando el comando:<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>Este comando crear\u00eda una carpeta de almacenamiento en el directorio p\u00fablico. Aqu\u00ed es donde almacenamos nuestros archivos.<\/p>\n<h3>Cargar y cambiar el tama\u00f1o de las im\u00e1genes en Laravel<\/h3>\n<p>Para cargar archivos en un servidor, necesita un formulario. Creemos un formulario donde puede seleccionar varios archivos para cargar en un servidor. A continuaci\u00f3n se muestra un c\u00f3digo de muestra del formulario que ir\u00e1 dentro de su archivo de vista.<\/p>\n<pre><code>&lt;form action=\"{{ url('ROUTE HERE') }}\" method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"exampleInputFile\"&gt;File input&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"profile_image[]\" id=\"exampleInputFile\" multiple \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0{{ csrf_field() }}\n\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" class=\"btn btn-default\"&gt;Submit&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>En el formulario, he tomado un nombre de entrada de archivo como &#8216;profile_image []&#8217; que env\u00eda una serie de archivos al servidor. Adem\u00e1s, agregu\u00e9 un atributo &#8216;m\u00faltiple&#8217; que nos permite seleccionar varios archivos. Reemplace el marcador de posici\u00f3n ROUTE_URL con su valor real.<\/p>\n<p>Como necesitamos cargar y cambiar el tama\u00f1o de las im\u00e1genes, en el controlador agregue dos fachadas de la siguiente manera.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\nuse Image; \/\/Intervention Image\nuse IlluminateSupportFacadesStorage; \/\/Laravel Filesystem\n\u00a0\nclass ImageController extends Controller\n{\n\u00a0\n}<\/code><\/pre>\n<p>Al agregar la fachada, puede llamar a las funciones de cambio de tama\u00f1o de la biblioteca de im\u00e1genes de intervenci\u00f3n. En el siguiente c\u00f3digo, subir\u00e9 los archivos en dos lugares. Uno es la imagen original. El segundo est\u00e1 en el directorio de miniaturas. Primero cargamos la imagen original en la carpeta de miniaturas y luego la cambiamos de tama\u00f1o.<\/p>\n<pre><code>public function store(Request $request)\n{\n\u00a0\u00a0\u00a0\u00a0if ($request-&gt;hasFile('profile_image')) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0foreach($request-&gt;file('profile_image') as $file){\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename with extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenamewithextension = $file-&gt;getClientOriginalName();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename without extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get file extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$extension = $file-&gt;getClientOriginalExtension();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/filename to store\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenametostore = $filename.'_'.uniqid().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Storage::put('public\/profile_images\/'. $filenametostore, fopen($file, 'r+'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Storage::put('public\/profile_images\/thumbnail\/'. $filenametostore, fopen($file, 'r+'));\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Resize image here\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$thumbnailpath = public_path('storage\/profile_images\/thumbnail\/'.$filenametostore);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img = Image::make($thumbnailpath)-&gt;resize(400, 150, function($constraint) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;save($thumbnailpath);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return redirect('ROUTE_URL')-&gt;with('success', \"Image uploaded successfully.\");\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Aqu\u00ed estamos cambiando el tama\u00f1o de la imagen proporcionalmente. Al hacerlo, mantenemos la relaci\u00f3n de aspecto y la imagen no se cortar\u00e1. Estoy pasando el ancho como 400 y la altura como 150. Puede cambiar estos valores seg\u00fan sus necesidades.<\/p>\n<p>Adelante, pru\u00e9balo. Obtendr\u00e1 la versi\u00f3n de cambio de tama\u00f1o de las im\u00e1genes cargadas en el directorio &#8216;storage \/ profile_images \/ thumbnail&#8217;.<\/p>\n<p>Si est\u00e1 buscando un cultivo duro, reemplace las l\u00edneas siguientes<\/p>\n<pre><code>$img = Image::make($thumbnailpath)-&gt;resize(400, 150, function($constraint) {\n\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n});\n$img-&gt;save($thumbnailpath);<\/code><\/pre>\n<p>Con<\/p>\n<pre><code>$img = Image::make($thumbnailpath)-&gt;resize(100, 100)-&gt;save($thumbnailpath);<\/code><\/pre>\n<p>Espero que entiendas c\u00f3mo cargar y cambiar el tama\u00f1o de varias im\u00e1genes en Laravel. Comparta sus pensamientos y sugerencias en la secci\u00f3n de comentarios a continuaci\u00f3n.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-cargar-un-archivo-a-s3-usando-el-sistema-de-archivos-laravel\/\" title=\"C\u00f3mo cargar un archivo a S3 usando el sistema de archivos Laravel\">C\u00f3mo cargar un archivo a S3 usando el sistema de archivos Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-realizar-una-copia-de-seguridad-de-la-aplicacion-laravel\/\" title=\"C\u00f3mo realizar una copia de seguridad de la aplicaci\u00f3n Laravel\">C\u00f3mo realizar una copia de seguridad de la aplicaci\u00f3n Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-integrar-el-boletin-de-mailchimp-en-la-aplicacion-laravel\/\" title=\"C\u00f3mo integrar el bolet\u00edn de MailChimp en la aplicaci\u00f3n Laravel\">C\u00f3mo integrar el bolet\u00edn de MailChimp en la aplicaci\u00f3n Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfEst\u00e1 buscando c\u00f3mo cargar y cambiar el tama\u00f1o de varias im\u00e1genes en Laravel? En este art\u00edculo, le mostramos c\u00f3mo realizar esta tarea utilizando Intervention Image<\/p>\n","protected":false},"author":1,"featured_media":21676,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[495],"tags":[849],"class_list":["post-28528","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28528","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=28528"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28528\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/21676"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=28528"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=28528"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=28528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}