{"id":28828,"date":"2021-06-01T19:38:00","date_gmt":"2021-06-01T16:38:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28828"},"modified":"2021-10-17T16:31:48","modified_gmt":"2021-10-17T13:31:48","slug":"como-optimizar-la-imagen-al-cargarla-en-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/como-optimizar-la-imagen-al-cargarla-en-php\/","title":{"rendered":"C\u00f3mo optimizar la imagen al cargarla en PHP"},"content":{"rendered":"<p>Recientemente, uno de los lectores me pregunt\u00f3 c\u00f3mo optimizar las im\u00e1genes al cargarlas en PHP. Para responder a la pregunta, decid\u00ed escribir un art\u00edculo que mostrar\u00e1 c\u00f3mo podemos reducir o comprimir el tama\u00f1o del archivo al momento de subirlo.<\/p>\n<p>Como desarrollador, la carga de archivos es nuestra tarea habitual. Siempre lo hacemos de forma tradicional. Usando la funci\u00f3n incorporada <code>move_uploaded_file<\/code>, movemos las im\u00e1genes al directorio y las dejamos como est\u00e1n. \u00bfPensamos en algunos puntos como cu\u00e1l es el tama\u00f1o de la imagen cargada? \u00bfEsta imagen tardar\u00e1 en cargarse en un sitio web? \u00bfPuedo optimizar una imagen sin perder su calidad?<\/p>\n<p>Las im\u00e1genes juegan un papel importante en la velocidad del sitio. Las im\u00e1genes pesadas ralentizan la velocidad de la p\u00e1gina, lo que, como resultado, pierde audiencia y tr\u00e1fico. Esta situaci\u00f3n no es asequible. Nos esforzamos mucho para generar audiencia y tr\u00e1fico. Por lo tanto, como buena pr\u00e1ctica, debe optimizar la imagen durante la carga.<\/p>\n<p>En este art\u00edculo, <a href=\"https:\/\/tinypng.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">usar\u00e9 el<\/a> servicio <a href=\"https:\/\/tinypng.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">TinyPNG<\/a> para optimizar las im\u00e1genes. Escribiremos un c\u00f3digo para ello en unos momentos. Mientras tanto, a continuaci\u00f3n se muestra la captura de pantalla de tinypng.com para visualizar la diferencia entre la imagen original y la optimizada.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20382-6081e8cbba932.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-20382-6081e8cbba932.png\" alt=\"C\u00f3mo optimizar la imagen al cargarla en PHP\" ><\/a><\/p>\n<h3>Utilice TinyPNG para optimizar la imagen al subirla<\/h3>\n<p>Para comenzar, debe instalar la biblioteca TinyPNG. Instale la biblioteca usando el siguiente comando.<\/p>\n<pre><code>composer require tinify\/tinify<\/code><\/pre>\n<p>Despu\u00e9s de instalar la biblioteca, obtenga su clave API del <a href=\"https:\/\/tinypng.com\/developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sitio<\/a> web de <a href=\"https:\/\/tinypng.com\/developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">TinyPNG<\/a>.<\/p>\n<p><strong>Nota<\/strong>: TinyPNG permite comprimir 500 im\u00e1genes gratis por mes. Por m\u00e1s de 500 im\u00e1genes debes pagarlas. Si tiene un sitio web peque\u00f1o, esta cuota es suficiente.<\/p>\n<p>Una vez que est\u00e9 listo con la clave API, comencemos con el c\u00f3digo. Estoy creando un formulario HTML simple que contiene la entrada de archivos y un bot\u00f3n de env\u00edo.<\/p>\n<pre><code>&lt;form method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"file\" name=\"myfile\" accept=\"image\/*\" required \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" name=\"submit\"&gt;Submit&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Cuando los usuarios cargan una imagen usando este formulario, los desarrolladores escriben el siguiente tipo de c\u00f3digo para mover la imagen cargada en el servidor.<\/p>\n<pre><code>if (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$allowed_mime_types = array('image\/gif', 'image\/jpg', 'image\/jpeg', 'image\/png');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (!in_array($_FILES['myfile']['type'], $allowed_mime_types)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo 'Invalid file format.';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0exit();\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (!file_exists(getcwd().'\/uploads')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir(getcwd().'\/uploads', 0777);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$src_file_name = $_FILES['myfile']['name'];\n\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['myfile']['tmp_name'], getcwd().'\/uploads\/'.$src_file_name);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0echo \"File uploaded successfully\";\n}<\/code><\/pre>\n<p>El c\u00f3digo anterior es correcto y no hay ning\u00fan problema, excepto la parte faltante de la optimizaci\u00f3n de la imagen. Para optimizar im\u00e1genes, solo necesita agregar 2 l\u00edneas de c\u00f3digo despu\u00e9s de la <code>move_uploaded_file<\/code>declaraci\u00f3n.<\/p>\n<pre><code>\/\/optimize image using TinyPNG\n$source = TinifyfromFile(getcwd().'\/uploads\/'.$src_file_name);\n$source-&gt;toFile(getcwd().'\/uploads\/'.$src_file_name);<\/code><\/pre>\n<p>Las 2 l\u00edneas anteriores toman una imagen de la ruta de origen, la optimizan con la biblioteca TinyPNG sin perder calidad y la guardan en la misma ruta de origen. En otras palabras, reemplaza la imagen original con la versi\u00f3n optimizada.<\/p>\n<p>Nuestro c\u00f3digo final es el siguiente.<\/p>\n<pre><code>&lt;?php\nrequire_once(\"vendor\/autoload.php\");\n\u00a0\nTinifysetKey(\"TINYPNG_API_KEY\"); \/\/pass your actual API key\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$allowed_mime_types = array('image\/gif', 'image\/jpg', 'image\/jpeg', 'image\/png');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (!in_array($_FILES['myfile']['type'], $allowed_mime_types)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo 'Invalid file format.';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0exit();\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (!file_exists(getcwd().'\/uploads')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir(getcwd().'\/uploads', 0777);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$src_file_name = $_FILES['myfile']['name'];\n\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['myfile']['tmp_name'], getcwd().'\/uploads\/'.$src_file_name);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/optimize image using TinyPNG\n\u00a0\u00a0\u00a0\u00a0$source = TinifyfromFile(getcwd().'\/uploads\/'.$src_file_name);\n\u00a0\u00a0\u00a0\u00a0$source-&gt;toFile(getcwd().'\/uploads\/'.$src_file_name);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0echo \"File uploaded successfully.\";\n}\n?&gt;\n&lt;form method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"file\" name=\"myfile\" accept=\"image\/*\" required \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" name=\"submit\"&gt;Submit&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Adelante, pru\u00e9balo. Deber\u00eda ver que la versi\u00f3n optimizada de la imagen se almacena en su directorio.<\/p>\n<p>Espero que comprenda c\u00f3mo optimizar la imagen al cargarla en PHP. Me gustar\u00eda escuchar 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\/tinypng-comprimir-imagenes-usando-php\/\" title=\"TinyPNG Comprimir im\u00e1genes usando PHP\">TinyPNG Comprimir im\u00e1genes usando PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/cargar-y-comprimir-varias-imagenes-en-php\/\" title=\"Cargar y comprimir varias im\u00e1genes en PHP\">Cargar y comprimir varias im\u00e1genes en PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-cargar-y-comprimir-imagenes-en-laravel\/\" title=\"Una gu\u00eda para cargar y comprimir im\u00e1genes en Laravel\">Una gu\u00eda para cargar y comprimir im\u00e1genes en 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>En este art\u00edculo, le muestro c\u00f3mo optimizar la imagen al cargarla en PHP usando la biblioteca TinyPNG. Las im\u00e1genes juegan un papel muy importante en el sitio web.<\/p>\n","protected":false},"author":1,"featured_media":21612,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[271],"tags":[849],"class_list":["post-28828","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28828","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=28828"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28828\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/21612"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=28828"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=28828"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=28828"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}