• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

index

.nfo to .png

12 mensagens neste tópico

Olá a todos..

Indo directo ao assunto que me trás aqui..

Eu tenho um script .php que me transforma ficheiros .nfo em ficheiros .png:

<?php
/*
* File    : nfo2png.php
* Created : 14 March 2004
* By      : Stefan Gräfe
*
* NFO2PNG - Small NFO to PNG render library
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

function buildNFO($nfotext, $footer = "", $fg = "000000") {
  // Write Headers for PNG
  header("Content-Type: image/png");
  header("Content-Disposition: inline; filename=\"nfo2png.sf.net.png\"");
  
  if(!strlen($nfotext)) $nfotext = "Empty String submitted.";

  $nfo = explode("\n", $nfotext);
  
  // Load the Bitmap-Font
  $fnt = imageloadfont("nfo2pngfont");
             
  // Check for empty lines
  $fillers = strlen($nfo[1])+strlen($nfo[3])+strlen($nfo[5])+strlen($nfo[7])<9?1:0;
  
  $nxo = array();
  $xmax = 0;
  
  // Reformat each line
  foreach($nfo as $key=>$line){
    $line = chop($line);
    if($xmax < strlen($line)) $xmax = strlen($line);
    if($fillers and ($key & 1)) continue;
    array_push($nxo,$line);
  }
  
  // Show footer
  if(strlen($footer)) {
    array_push($nxo,"");
    $fill = str_repeat(" ",($xmax - strlen($footer)>>1));
    array_push($nxo,$fill.$footer);
  }
  
  // Linecount
  $ymax = count($nxo);
  
  // Set foreground color
  $color = array(0, 0, 0);
  if(strlen($fg) == 6) {
    $color[0] = intval(substr($fg,0,2), 16);
    $color[1] = intval(substr($fg,2,2), 16);
    $color[2] = intval(substr($fg,4,2), 16);
  }
                      
  // Render NFO
  $im = ImageCreate($xmax*8,$ymax*16);
  ImageInterlace($im,1); 
  $background_color = ImageColorTransparent($im, ImageColorAllocate ($im, 254, 254, 126));
  $text_color = ImageColorAllocate ($im, $color[0], $color[1], $color[2]);
  
  foreach($nxo as $y=>$line)
    ImageString($im, $fnt, 0, $y*16, $line, $text_color);
  ImagePNG($im);
}
?>

O 'problema' é que a imagem não é guardada em nenhum directório, e era precisamente isso que eu necessitava.

Será possivel modificar o código para o fazer?

Desde já obrigado por toda a ajuda!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A ultima linha:

imagepng($im, "teste.png");

Cumps

Alterei isso, e ele ñ guardou em lado nenhum..

O que eu pretendia, era ao chamar a função buildnfo() ele pegasse no .nfo que eu escolho, e guardasse o png no sub-directório upload/

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou postar o "Usage" do code, pode ser que ajude:

BuildNFO-Usage

~~~~~~~~~~~~~~

Include the nfo2png.php in your php-file and call the "buildnfo"-function

with following parameters:

- nfotext (mandatory)

 

  The  NFO-content.

 

- footer (optional)

 

  A singe-line footer. Will be added with a seperator-line.

  Default: empty-line

  Example: "Powered by NFO2PNG"

 

- foreground-color (optional)

  Defines the foreground RGB-color.

 

  Default: "000000"

  Example: "3F204C"

 

 

Some example-calls:

                                     

  // Build a NFO with a footer-line

  buildnfo($nfo, "Powred by NFO2PNG");

 

  // Build a NFO without a footer-line but

  // with a different color

  buildnfo($nfo, "", "803080");

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
$path = '/path/para/a/pasta/upload/';
imagepng($im, $path . 'teste.png');

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado a todos..

Realmente era essa a solução, eu é que da primeira vez estava a cometer um erro, que não permitia que funcionasse..

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado a todos..

Realmente era essa a solução, eu é que da primeira vez estava a cometer um erro, que não permitia que funcionasse..

Cumps

Na pasta onde pretendes gravar tens de ter permissões de escrita como é obvio =) Ainda bem que já bomba =)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aproveito este tópico para colocar outra dúvida..

Eu tenho a pasta upload/ onde são guardadas as imagens.. O problema é que dá para aceder à pasta directamente (ver todo o seu conteúdo)..

Há forma de os users apenas poderem ver as imagens pelo seu link directo, e não abrindo a directoria?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou usas um .htaccess para evitar dir listing, ou metes um index.php assim:

<?php

header("Location: ../");

?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou usas um .htaccess para evitar dir listing, ou metes um index.php assim:

<?php

header("Location: ../");

?>

Obrigado pela dica :D

Já agora deixo aqui o produto de todas estas perguntas: http://nfo2png.softdown.info/

(Se for considerado PUB, alertem-me que retirarei imediatamente)

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Há forma de os users apenas poderem ver as imagens pelo seu link directo, e não abrindo a directoria?

a forma mais simples é um ficheiro vazio chamado index.html

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para colocarem dúvidas existe uma secção interna em cada àrea denominada Dúvidas e Ajudas.

Por favor utilizem essa secção de forma a poupar trabalho aos Moderadores para moverem tópicos.

Obrigado

:P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora