function ptgen_generator($post_id) { $pg_options = get_option('pg_options'); $text = pg_limit_text(get_the_title($post_id), 30); $call_to_action_text = $pg_options['pg_text_call_to_action']; $call_to_action_website = $pg_options['pg_website_call_to_action']; $thumbnail = get_the_post_thumbnail_url($post_id, 'full'); $hash = hash('md5', strval($post_id)); $photo_diretory = PTGEN_PLUGIN_PATH . 'files/images/img-' . $hash . '.jpg'; // Fix: Encode the URL properly to handle special characters $encoded_thumbnail = esc_url_raw($thumbnail); // Use wp_safe_remote_get instead of file_get_contents for better error handling $response = wp_safe_remote_get($encoded_thumbnail, array( 'timeout' => 60, 'redirection' => 5, 'httpversion' => '1.0', '-agent' => 'WordPress/' . get_bfo('version'), 'ssl' => false, )); // Check if the request was successful if (is_wp_error($response) || 200 !== wp_remote_retrieve_response_code($response)) { error_log('Failed to image: ' . $encoded_thumbnail); return false; } // Get the image content $image_content = wp_remote_retrieve_body($response); // Save the image to the local file if (file_put_contents($photo_diretory, $image_content)) { $feed_diretory = PTGEN_PLUGIN_PATH . 'files/feed-' . $hash . '.jpg'; $feed_facebook_diretory = PTGEN_PLUGIN_PATH . 'files/feed-facebook-' . $hash . '.jpg'; $story_diretory = PTGEN_PLUGIN_PATH . 'files/story-' . $hash . '.jpg'; $logo = new Imagick(); $logo->readImage(pg_get_image_logo_patch(wp_get_attachment_url($pg_options['pg_image'], 'full'))); $logo->scaleImage(200, 60, true); // Rest of the function remains the same // ------------------ FEED FACEBOOK ------------------ $image_fb = new Imagick(); $title_fb = new ImagickDraw(); $cta_fb = new ImagickDraw(); $website_fb = new ImagickDraw(); $pixel_fb = new ImagickPixel('white'); $image_fb->newImage(1440, 1800, $pixel_fb); $thumbnail_fb = new Imagick($photo_diretory); $thumbnail_fb->scaleImage(4320, 1800, true); $thumb_width = $thumbnail_fb->getImageWidth(); $thumb_x = (1440 - $thumb_width) / 2; $bg_feed_fb = new Imagick(); $bg_feed_fb->readImage(PTGEN_PLUGIN_PATH . "assets/images/feed.png"); $logo_x = 720 - ($logo->getImageWidth() / 2); $image_fb->compositeImage($thumbnail_fb, Imagick::COMPOSITE_OVER, ceil($thumb_x), 0); $image_fb->compositeImage($bg_feed_fb, Imagick::COMPOSITE_OVER, 0, 0); $image_fb->compositeImage($logo, Imagick::COMPOSITE_OVER, ceil($logo_x), 1680); $title_fb->setFillColor($pg_options['pg_feed_font_color']); $title_fb->setFont(PTGEN_PLUGIN_PATH . 'assets/fonts/Inter-Bold.ttf'); $title_fb->setFontSize(90); $title_fb->setTextAlignment(Imagick::ALIGN_CENTER); list($lines, $lineHeight) = ptgen_word_wrap($image_fb, $title_fb, $text, 1350); $text_height = count($lines) * $lineHeight; $title_y = 1350 - ($text_height / 2); // centralizado na área útil inferior foreach ($lines as $i => $line) { $image_fb->annotateImage($title_fb, 720, $title_y + $i * $lineHeight, 0, $line); } $cta_fb->setFillColor($pg_options['pg_color_call_to_action']); $cta_fb->setFont(PTGEN_PLUGIN_PATH . 'assets/fonts/Inter-Bold.ttf'); $cta_fb->setFontSize(40); $cta_fb->setTextAlignment(Imagick::ALIGN_CENTER); list($lines, $lineHeight) = ptgen_word_wrap($image_fb, $cta_fb, $call_to_action_text, 1300); foreach ($lines as $i => $line) { $image_fb->annotateImage($cta_fb, 720, 1200 + $i * $lineHeight, 0, $line); } $website_fb->setFillColor($pg_options['pg_color_call_to_action']); $website_fb->setFont(PTGEN_PLUGIN_PATH . 'assets/fonts/Inter-Bold.ttf'); $website_fb->setFontSize(36); $website_fb->setTextAlignment(Imagick::ALIGN_CENTER); list($lines, $lineHeight) = ptgen_word_wrap($image_fb, $website_fb, $call_to_action_website, 1300); foreach ($lines as $i => $line) { $image_fb->annotateImage($website_fb, 720, 1200 + $i * $lineHeight, 0, $line); } $image_fb->optimizeImageLayers(); $image_fb->setCompression(Imagick::COMPRESSION_JPEG); $image_fb->setImageFormat("jpg"); $image_fb->setInterlaceScheme(Imagick::INTERLACE_PLANE); $image_fb->stripImage(); $image_fb->setImageCompressionQuality(0); $image_fb->writeImage($feed_facebook_diretory); $image_fb->destroy(); /* ------------------ / Feed / ---------------- */ $image = new Imagick(); $title = new ImagickDraw(); $call_to_action = new ImagickDraw(); $website = new ImagickDraw(); $pixel = new ImagickPixel('white'); $image->newImage(1080, 1080, $pixel); $thumbnail = new Imagick($photo_diretory); $thumbnail->scaleImage(3000, 1080, true); $thumbnail_width = $thumbnail->getImageWidth(); $thumb_position_x = (1080 - $thumbnail_width) / 2; $bg_feed = new Imagick(); $bg_feed->readImage(PTGEN_PLUGIN_PATH . "assets/images/feed.png"); $logo_position_x = 540 - ($logo->getImageWidth() / 2); $image->compositeImage($thumbnail, imagick::COMPOSITE_OVER, ceil($thumb_position_x), 0); $image->compositeImage($bg_feed, imagick::COMPOSITE_OVER, 0, 0); $image->compositeImage($logo, imagick::COMPOSITE_OVER, ceil($logo_position_x), 980); $title->setFillColor($pg_options['pg_feed_font_color']); $title->setFont(PTGEN_PLUGIN_PATH . 'assets/fonts/Inter-Bold.ttf'); $title->setFontSize($pg_options['pg_feed_font_size']); $title->setTextAlignment(\Imagick::ALIGN_CENTER); list($lines, $lineHeight) = ptgen_word_wrap($image, $title, $text, 950); $text_height = sizeof($lines) * $lineHeight; $title_position_y = 1080 - (180 + $text_height); for ($i = 0; $i < count($lines); $i++) { $image->annotateImage($title, 530, $title_position_y + $i * $lineHeight, 0, $lines[$i]); } $call_to_action->setFillColor($pg_options['pg_color_call_to_action']); $call_to_action->setFont(PTGEN_PLUGIN_PATH . 'assets/fonts/Inter-Bold.ttf'); $call_to_action->setFontSize(32); $call_to_action->setTextAlignment(\Imagick::ALIGN_CENTER); list($lines, $lineHeight) = ptgen_word_wrap($image, $call_to_action, $call_to_action_text, 950); for ($i = 0; $i < count($lines); $i++) { $image->annotateImage($call_to_action, 530, 920 + $i * $lineHeight, 0, $lines[$i]); } $website->setFillColor($pg_options['pg_color_call_to_action']); $website->setFont(PTGEN_PLUGIN_PATH . 'assets/fonts/Inter-Bold.ttf'); $website->setFontSize(32); $website->setTextAlignment(\Imagick::ALIGN_CENTER); list($lines, $lineHeight) = ptgen_word_wrap($image, $website, $call_to_action_website, 950); for ($i = 0; $i < count($lines); $i++) { $image->annotateImage($website, 530, 965 + $i * $lineHeight, 0, $lines[$i]); } $image->optimizeImageLayers(); $image->setCompression(imagick::COMPRESSION_JPEG); $image->setImageFormat("jpg"); $image->setInterlaceScheme(Imagick::INTERLACE_PLANE); $image->stripImage(); $image->setImageCompressionQuality(0); $image->writeImage($feed_diretory); $image->destroy(); /* ------------------ / Story / ---------------- */ $image = new Imagick(); $title = new ImagickDraw(); $call_to_action = new ImagickDraw(); $website = new ImagickDraw(); $pixel = new ImagickPixel('white'); $image->newImage(720, 1280, $pixel); $thumbnail = new Imagick($photo_diretory); $thumbnail->scaleImage(3000, 1280, true); $thumbnail_width = $thumbnail->getImageWidth(); $thumb_position_x = (720 - $thumbnail_width) / 2; $bg_story = new Imagick(); $bg_story->readImage(PTGEN_PLUGIN_PATH . "assets/images/story.png"); $logo_position_x = 360 - ($logo->getImageWidth() / 2); $image->compositeImage($thumbnail, imagick::COMPOSITE_OVER, ceil($thumb_position_x), 0); $image->compositeImage($bg_story, imagick::COMPOSITE_OVER, 0, 0); if ($pg_options['pg_story_title_custom_position_options'] == 'auto-adjust') { $image->compositeImage($logo, imagick::COMPOSITE_OVER, ceil($logo_position_x), 1080); } else { $image->compositeImage($logo, imagick::COMPOSITE_OVER, ceil($logo_position_x), 1180); } $title->setFillColor($pg_options['pg_story_font_color']); $title->setFont(PTGEN_PLUGIN_PATH . 'assets/fonts/Inter-Bold.ttf'); $title->setFontSize(35); $title->setTextAlignment(\Imagick::ALIGN_CENTER); list($lines, $lineHeight) = ptgen_word_wrap($image, $title, $text, 600); $text_height = sizeof($lines) * $lineHeight; switch ($pg_options['pg_story_title_custom_position_options']) { case 'auto': $title_position_y = 1280 - (180 + $text_height); break; case 'figure': $title_position_y = 1280 - (350 + $text_height); $figure = new Imagick(); $figure->readImage(PTGEN_PLUGIN_PATH . 'assets/images/figure.png'); $figure->scaleImage(390, 113, true); $figure->evaluateImage(Imagick::EVALUATE_MULTIPLY, 0.2, Imagick::CHANNEL_ALPHA); $image->compositeImage($figure, imagick::COMPOSITE_OVER, 150, 930); break; case 'pixel': $title_position_y = $pg_options['pg_story_title_custom_position']; break; case 'auto-adjust': default: $title_position_y = 1280 - (280 + $text_height); break; } for ($i = 0; $i < count($lines); $i++) { $image->annotateImage($title, 350, $title_position_y + $i * $lineHeight, 0, $lines[$i]); } $call_to_action->setFillColor($pg_options['pg_color_call_to_action']); $call_to_action->setFont(PTGEN_PLUGIN_PATH . 'assets/fonts/Inter-Bold.ttf'); $call_to_action->setFontSize(28); $call_to_action->setTextAlignment(\Imagick::ALIGN_CENTER); list($lines, $lineHeight) = ptgen_word_wrap($image, $call_to_action, $call_to_action_text, 600); $cta_y = ($pg_options['pg_story_title_custom_position_options'] == 'auto-adjust') ? 1015 : 1110; for ($i = 0; $i < count($lines); $i++) { $image->annotateImage($call_to_action, 350, $cta_y + $i * $lineHeight, 0, $lines[$i]); } $website->setFillColor($pg_options['pg_color_call_to_action']); $website->setFont(PTGEN_PLUGIN_PATH . 'assets/fonts/Inter-Bold.ttf'); $website->setFontSize(28); $website->setTextAlignment(\Imagick::ALIGN_CENTER); list($lines, $lineHeight) = ptgen_word_wrap($image, $website, $call_to_action_website, 600); $website_y = ($pg_options['pg_story_title_custom_position_options'] == 'auto-adjust') ? 1060 : 1155; for ($i = 0; $i < count($lines); $i++) { $image->annotateImage($website, 350, $website_y + $i * $lineHeight, 0, $lines[$i]); } $image->optimizeImageLayers(); $image->setCompression(imagick::COMPRESSION_JPEG); $image->setImageFormat("jpg"); $image->setInterlaceScheme(Imagick::INTERLACE_PLANE); $image->stripImage(); $image->setImageCompressionQuality(0); $image->writeImage($story_diretory); $image->destroy(); unlink($photo_diretory); $images = array( 'feed' => get_site_url() . '/wp-content/plugins/post-generator/files/feed-' . $hash . '.jpg', 'feed_facebook' => get_site_url() . '/wp-content/plugins/post-generator/files/feed-facebook-' . $hash . '.jpg', 'story' => get_site_url() . '/wp-content/plugins/post-generator/files/story-' . $hash . '.jpg' ); return $images; } return false; } Rutênio: O metal raro que pode derrubar o cobre e mudar a indústria de chips!
  1. Início
  2. / Indústria
  3. / Rutênio: O metal raro que pode derrubar o cobre e mudar a indústria de chips!
Tempo de leitura 3 min de leitura Comentários 1 comentários

Rutênio: O metal raro que pode derrubar o cobre e mudar a indústria de chips!

Escrito por Bruno Teles
Publicado em 05/02/2025 às 14:15
Rutênio: O metal raro que pode derrubar o cobre e mudar a indústria de chips!
O rutênio vem principalmente da mineração de platina e níquel, já que ele é um subproduto desses metais. As maiores reservas estão na África do Sul, Rússia, Zimbábue, Canadá e EUA.

Com alta condutividade e resistência à corrosão, o rutênio surge como o sucessor do cobre na fabricação de chips. Mas tem um problema (e dos grandes!): ele é extremamente escasso, representando só 0,0000002% da crosta terrestre. Será esse o novo ouro da tecnologia?

Por muito tempo, o cobre foi o rei absoluto dos semicondutores. Ele está ali, em praticamente todos os chips, garantindo que as conexões entre os transistores funcionem direitinho. Mas, como toda realeza, parece que o reinado dele pode estar com os dias contados com a chegada do rutênio.

Ele tem tudo para substituir o cobre, já que conduz eletricidade tão bem quanto e ainda tem uma resistência incrível à corrosão. Só que tem um detalhe: ele é raríssimo. E isso pode complicar bastante a adoção dele em larga escala.

O papel crucial do cobre na indústria de semicondutores

O cobre não foi escolhido à toa. Ele é excelente para conduzir eletricidade e calor, é fácil de moldar e, de quebra, resiste bem à corrosão. Tudo isso fez dele um dos materiais mais importantes na fabricação de semicondutores.

Dia
Baratíssimo
📱 Smartphones poderosos com preços e descontos imperdíveis!
Ícone de Episódios Comprar

O cobre tem um probleminha chato chamado difusão no silício. Basicamente, ele pode acabar infiltrando onde não devia e comprometendo o funcionamento dos chips. Para resolver isso, a IBM encontrou, lá em 1998, um jeito de revestir as conexões de cobre, impedindo que ele bagunçasse a estrutura do silício. Funcionou tão bem que essa solução é usada até hoje.

Só que os chips ficaram mais complexos, menores e mais rápidos. E agora, a indústria precisa de algo ainda melhor. Adivinha quem está na mira dos especialistas? O rutênio.

Por que o rutênio está chamando atenção como substituto do cobre?

Olhando as características do rutênio, dá até pra entender por que ele virou o queridinho da indústria. Ele é extremamente condutivo, resiste à corrosão como poucos metais e ainda sofre menos com eletromigração, aquele processo que desgasta os materiais dos chips com o tempo.

O problema é que o rutênio é absurdamente raro. Para você ter uma ideia, ele representa apenas 0,0000002% da crosta terrestre. Ou seja, encontrar e extrair esse metal em quantidade suficiente para substituir o cobre não é nada fácil.

As principais reservas dele estão na África do Sul, Rússia, Zimbábue, Canadá e EUA. E, se a demanda pelo rutênio aumentar, pode apostar que as grandes potências vão começar a disputar cada grama disponível.

A guerra tecnológica e a busca por novos materiais

Falando em disputas… Já deu pra perceber que os materiais estratégicos estão no centro de uma briga entre EUA e China. Isso já acontece com gálio, germânio e antimônio, que vêm sendo usados como moeda de troca nessa guerra comercial.

Agora imagine se o rutênio, um metal ainda mais raro e essencial, realmente entrar na jogada. O impacto seria gigantesco. Com poucas reservas no mundo, controlar esse material pode significar vantagem econômica e tecnológica. Se o cobre cair, o rutênio pode se tornar um dos recursos mais cobiçados da indústria.

Inscreva-se
Entre com
Notificar de
guest
1 Comentário
Mais antigos
Mais recente Mais votado
s
Visualizar todos comentários
João Prado
João Prado
06/02/2025 11:58

O planeta está sendo destruído pela super população como disse o cientista e navegador francês Jack Custeau que pesquisava no mundo inteiro em 1900 era de 1, 6 bilhões de habitantes hoje somos mais de 8 bilhões e só ou 120 anos quando li essa entrevista em 84 não tive dúvidas e avisaram em 80 que o CO2 havia ado do equilíbrio em ppm parte por milhão e que tinha que começar a mudar pra energia limpa os poderosos gananciosos do petróleo não ouviram hoje estamos vendo tudo as mudanças climáticas preocupante planejamento familiar JÁ e plantar florestas e mudar pra energia limpa urgente o planeta pede socorro Deus abençoe a todos nós 🙏

Bruno Teles

Falo sobre tecnologia, inovação, petróleo e gás. Atualizo diariamente sobre oportunidades no mercado brasileiro. Com mais de 7.000 artigos publicados nos sites G, Naval Porto Estaleiro, Mineração Brasil e Obras Construção Civil. Sugestão de pauta? Manda no brunotelesredator@gmail.com

Compartilhar em aplicativos
0
Adoraríamos sua opnião sobre esse assunto, comente!x