{"id":28537,"date":"2021-06-13T17:16:00","date_gmt":"2021-06-13T14:16:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28537"},"modified":"2021-10-18T04:00:06","modified_gmt":"2021-10-18T01:00:06","slug":"redimensionar-imagem-em-php-usando-a-biblioteca-de-imagens-de-intervencao","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/redimensionar-imagem-em-php-usando-a-biblioteca-de-imagens-de-intervencao\/","title":{"rendered":"Redimensionar imagem em PHP usando a biblioteca de imagens de interven\u00e7\u00e3o"},"content":{"rendered":"<p>Voc\u00ea est\u00e1 procurando como redimensionar imagens em PHP? Enquanto trabalhamos no aplicativo da web, precisamos criar diferentes vers\u00f5es em miniatura da imagem original. A miniatura \u00e9 a vers\u00e3o redimensionada de sua imagem original. Neste artigo, estudamos como fazer upload e redimensionar imagens em PHP.<\/p>\n<h3>Por que devemos redimensionar imagens?<\/h3>\n<p>No site, existem v\u00e1rios cen\u00e1rios em que precisamos exibir uma vers\u00e3o resumida de uma imagem grande. Um exemplo popular \u00e9 a Galeria de imagens. Na galeria, costum\u00e1vamos exibir uma lista de pequenas imagens. Quando um usu\u00e1rio clica na imagem pequena, ele abre a imagem grande no pop-up. Outro exemplo \u00e9 a exibi\u00e7\u00e3o de artigos relacionados, em que mostramos pequenas imagens junto com o t\u00edtulo e a descri\u00e7\u00e3o de uma postagem.<\/p>\n<p>Nesses cen\u00e1rios, precisamos gerar uma pequena imagem (miniatura) usando nossa imagem original. Uma pequena miniatura reduz o tamanho de suas p\u00e1ginas. Como voc\u00ea est\u00e1 usando uma pequena miniatura, o navegador requer pouca largura de banda para carregar a imagem. Isso adicionar\u00e1 alguns benef\u00edcios ao site. Alguns deles s\u00e3o:<\/p>\n<ul>\n<li>Melhora o desempenho do servidor<\/li>\n<li>Reduza a largura de banda<\/li>\n<li>Melhore a velocidade da p\u00e1gina<\/li>\n<\/ul>\n<p>Dito isso, vamos dar uma olhada em como redimensionar a imagem em PHP.<\/p>\n<h3>Come\u00e7ando<\/h3>\n<p><a href=\"http:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Intervention Image<\/a> \u00e9 uma biblioteca de c\u00f3digo aberto que atua como uma ferramenta de redimensionamento de imagens. Sob o cap\u00f4, Intervention Image usa GD Library e Imagick para processamento e manipula\u00e7\u00e3o de imagens.<\/p>\n<p>Para come\u00e7ar, voc\u00ea precisa instalar a biblioteca de imagens de interven\u00e7\u00e3o em seu aplicativo. Eu recomendo usar o <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> para a instala\u00e7\u00e3o de uma biblioteca.<\/p>\n<p>Abra o terminal no diret\u00f3rio raiz do seu projeto e execute o comando abaixo.<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Depois de instalar a biblioteca, voc\u00ea precisa incluir seu ambiente em seu aplicativo. Para isso, inclua abaixo de duas linhas o arquivo PHP.<\/p>\n<pre><code>&lt;?php\n\/\/ include composer autoload\nrequire 'vendor\/autoload.php';\n\u00a0\u00a0\nuse InterventionImageImageManagerStatic as Image;<\/code><\/pre>\n<p>Para fazer o upload e redimensionar a imagem, precisamos de um formul\u00e1rio onde se possa navegar pela imagem e clicar no bot\u00e3o enviar. Use o HTML abaixo que cont\u00e9m a entrada do arquivo e um bot\u00e3o de envio.<\/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=\"image\" \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\"&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<h3>Redimensionar imagem em PHP usando imagem de interven\u00e7\u00e3o<\/h3>\n<p>Instalamos a biblioteca e criamos um formul\u00e1rio. Em seguida, temos que fazer o upload e redimensionar a imagem na hora. Vou criar dois diret\u00f3rios <code>uploads<\/code>e <code>thumbnails<\/code>. Na <code>uploads<\/code>pasta, vamos armazenar a imagem original. A vers\u00e3o em miniatura da imagem ser\u00e1 armazenada dentro do <code>thumbnails<\/code>diret\u00f3rio.<\/p>\n<p>Use o c\u00f3digo abaixo que armazenar\u00e1 a vers\u00e3o original e em miniatura da imagem nos diret\u00f3rios <code>uploads<\/code>e <code>thumbnails<\/code>, respectivamente.<\/p>\n<pre><code>&lt;?php\nrequire 'vendor\/autoload.php';\n\u00a0\u00a0\nuse InterventionImageImageManagerStatic as Image;\n\u00a0\n$allowed_mime_type = array('image\/jpg', 'image\/jpeg', 'image\/png', 'image\/gif');\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (in_array($_FILES['image']['type'], $allowed_mime_type)) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (!file_exists('uploads')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir('uploads', 0755);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = time().'_'.$_FILES['image']['name'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filepath = 'uploads\/'. $filename;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['image']['tmp_name'], $filepath);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (!file_exists('uploads\/thumbnails')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir('uploads\/thumbnails', 0755);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$thumbnailpath = 'uploads\/thumbnails\/'. $filename;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img = Image::make($filepath);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;resize(300, null, function ($constraint) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;save($thumbnailpath);\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>No c\u00f3digo acima, passei a largura como 300 e redimensionei a imagem mantendo sua propor\u00e7\u00e3o. Voc\u00ea pode passar o valor da largura de acordo com sua exig\u00eancia. Manter a propor\u00e7\u00e3o do aspecto \u00e9 recomendado ao redimensionar a imagem. Usando a rela\u00e7\u00e3o de aspecto, a imagem n\u00e3o ser\u00e1 esticada. No entanto, se voc\u00ea est\u00e1 procurando um corte dif\u00edcil, substitua as linhas abaixo<\/p>\n<pre><code>$img-&gt;resize(300, null, function ($constraint) {\n\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n});<\/code><\/pre>\n<p>Com<\/p>\n<pre><code>$img-&gt;resize(300, 150)-&gt;save($thumbnailpath);<\/code><\/pre>\n<h3>Conclus\u00e3o<\/h3>\n<p>Neste tutorial, estudamos como redimensionar imagens mantendo sua propor\u00e7\u00e3o. Tamb\u00e9m escrevemos um c\u00f3digo que cortar\u00e1 a imagem com for\u00e7a. A biblioteca de imagens de interven\u00e7\u00e3o fornece mais algumas op\u00e7\u00f5es para um <code>resize<\/code>m\u00e9todo. Voc\u00ea pode ler mais sobre isso em sua <a href=\"http:\/\/image.intervention.io\/api\/resize\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documenta\u00e7\u00e3o<\/a>.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/redimensionar-imagem-no-laravel-usando-a-biblioteca-de-imagens-de-intervencao\/\" title=\"Redimensionar imagem no Laravel usando a biblioteca de imagens de interven\u00e7\u00e3o\">Redimensionar imagem no Laravel usando a biblioteca de imagens de interven\u00e7\u00e3o<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/redimensionar-imagem-em-php-usando-tinypng\/\" title=\"Redimensionar imagem em PHP usando TinyPNG\">Redimensionar imagem em PHP usando TinyPNG<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/arrastar-e-soltar-o-upload-de-arquivos-usando-javascript-e-php\/\" title=\"Arrastar e soltar o upload de arquivos usando JavaScript e PHP\">Arrastar e soltar o upload de arquivos usando JavaScript e PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo, estudamos como redimensionar imagens em PHP usando a biblioteca de imagens de interven\u00e7\u00e3o. Usar uma vers\u00e3o em miniatura reduz o tamanho da p\u00e1gina da web<\/p>\n","protected":false},"author":1,"featured_media":21621,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[278],"tags":[848],"class_list":["post-28537","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-9","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28537","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=28537"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28537\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21621"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=28537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=28537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=28537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}