Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Montei uma galeria de fotos, onde um usuário cadastrado posta fotos em sua conta, em um mecanismo em actionscript. Isso está funcionando, quando a foto é enviada, ela deve ser reduzida para servir de link na galeria e a foto grande deve ser salva junto também, para quando clicar no link. Só que com os scripts abaixo, não estou conseguindo salvar as duas fotos juntas.
Se eu coloco assim:
<?php
$action = $_GET['action'];
switch ("$action") {
case 'upload':
$pasta = $_GET['pasta'];
//diretório destino das imagens dentro da pasta da aplicação...
//deve ter permissão para escrita chmod(777)...
$dir = "../../$pasta";
//recebendo o arquivo multipart vindo do flash...
$file = $_FILES["Filedata"];
//finalizando o upload e criando apartir do arquivo temp, multipart, um novo arquivo
// em nossa pasta de destino. O echo serve para dizer ao flash se deu certo ou não...
echo move_uploaded_file($file["tmp_name"], $dir . "/" . $file["name"]);
// File and new size
$filename = $_FILES["Filedata"]['tmp_name'];
$percent = 0.2;
// Content type
header('Content-type: image/jpeg');
// Get new sizes
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;
// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// Output
imagejpeg($thumb, 'fotos.jpg', 100);
}
?>
a foto grande do upload é salva na pasta que preciso.
Se ponho assim:
<?php
$action = $_GET['action'];
switch ("$action") {
case 'upload':
$pasta = $_GET['pasta'];
//diretório destino das imagens dentro da pasta da aplicação...
//deve ter permissão para escrita chmod(777)...
$dir = "../../$pasta";
//recebendo o arquivo multipart vindo do flash...
$file = $_FILES["Filedata"];
//finalizando o upload e criando apartir do arquivo temp, multipart, um novo arquivo
// em nossa pasta de destino. O echo serve para dizer ao flash se deu certo ou não...
echo move_uploaded_file($file["Filedata"]["tmp_name"], $dir . "/" . $file["Filedata"]["name"]);
// File and new size
$filename = $_FILES["Filedata"]['tmp_name'];
$percent = 0.2;
// Content type
header('Content-type: image/jpeg');
// Get new sizes
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;
// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// Output
imagejpeg($thumb, 'fotos.jpg', 100);
}
?>
a miniatura com nome de fotos é salva, mas a foto grande não.
Preciso que as duas sejam salvas
Abrs
ola
Alguém sabe?
Não é isso, porque eu ponho o nome aqui:
imagejpeg($thumb, 'fotos.jpg', 100);
salva como foto.jpg, e a foto original salva com o nome que é original.
Na verdade esse nome que pus fotos.jpg é pra facilitar mesmo, e evitar de dar erros, mas resolvido essa questão, eu ponho pra salvar a miniatura como algo do tipo:
menor$file["tmp_name"], que salva a grande com nome original e a pequena como menoreonomeoriginal.
Valeu pela ajuda.
abrs
Mas é estranho não salvar as duas, deve tar faltando alguma linha.
abrs
Pessoal, não consigo ententer o motivo de gravar duas imagens no servidor, eu costumo lidar com sistema com um alto volume de conteudo. Imagine todas as imagens duplicadas no servidor, alem do problema de espaco, teria problemas tb na organização desse conteudo.
Imagine o fato: mudei o layout, e tive que aumentar 15 px na largura e altura do thumb, teria que repassar todos os arquivos e gerar imagem de thumb novamente.
Basta gravar uma unica imagem, grande o suficiente para o sistema.
E gerar o thumb ON DEMAND, ON FLY, NA HORA, REAL TIME, isso é você cria o thumb somente na hora exata que precisa e quando for solicitado, apenas para aquele usuário, online , e no tamanho que o layout determinar
Nota, ele thumb pode ser usado em diversos setores com diversos tamanhos, imagine salvar thumbs para todos os tamanhos. - f***.
Portando estou disponibilizando um script para gerar thumb de imagem JPG em REAL TIME.
Salve como thumb.php
<?php
$largura = $_GET['largura'];
$altura = $_GET['altura'];
$medida = $_GET['medida'];
$jpeg = $_GET['end'];
if($d=getimagesize($jpeg)){
if($altura and $largura){
$p_final = $largura/$altura;
$p_orig = $d[0]/$d[1];
if ($p_orig >= $p_final) {
$nova_largura = ($d[0]-(($largura*$d[1])/$altura))/2;
$x_i = $nova_largura;
$x_f = $d[0]-$nova_largura*2;
$y_i = 0;
$y_f = $d[1];
} else {
$x_i = 0;
$x_f = $d[0];
$nova_altura = ($d[1]-(($altura*$d[0])/$largura))/2;
$y_i = $nova_altura;
$y_f = $d[1]-$nova_altura*2;
}
}else{
$dim = ($d[1]>$d[0]) ? 1 : 0;
$mod = ($medida*100) / $d[$dim];
$largura=($d[0]/100)*$mod;
$altura=($d[1]/100)*$mod;
$x_i = $y_i = 0;
}
header('Content-type: image/jpeg');
$src = imagecreatefromjpeg($jpeg);
if($medida){
$x_f = ImageSX( $src );
$y_f = ImageSY( $src );
}
$dst = ImageCreateTrueColor($largura, $altura);
$white = imagecolorallocate($dst,255,255,255);
imagefill($dst,0,0,$white);
imagecopyresampled($dst,$src,0,0,$x_i,$y_i,$largura,$altura,$x_f,$y_f);
imagejpeg($dst, null, 98);
}
?>
para utiliar ele é bem simples
um exemplo:
<img src="includes/thumb.php?end=../uploads/noticias/<?=$not[IMAGEM]?>&largura=70&altura=50" border="0">
<BR>
<img src="includes/thumb.php?end=../uploads/noticias/<?=$not[IMAGEM]?>&medida=50" border="0">
<BR>
<img src="thumb.php?end=uploads/noticias/nome_imagem.jpg&largura=30&altura=20" border="0">
Simpls né, fora o lado da versatilidad, bom uso de processamento, redução de espaço ocupado no servidor, redução de códigos, redução de possibildades de erros, facilidade nm redesign do projeto, etc.
Antes que falem que o thumb será utilizado pelo flash. Sou programador AS tb.
_root.mc_thumb.loadMovie("thumb.php?end=nome_imagem.jpg&largura=50&altura=40");
É isso ai.
Não entendi como aplica nesse AS:
texto.autoSize = true;
import mx.transitions.Tween;
import mx.transitions.easing.*;
var carregado:Boolean = false;
var meuMCL:MovieClipLoader = new MovieClipLoader();
var pequenoMCL:MovieClipLoader = new MovieClipLoader();
var meuListener:Object = new Object();
var pequenoListener:Object = new Object();
var dadosXML:XML = new XML();
dadosXML.ignoreWhite = true;
dadosXML.load(pasta+"/fotos.xml");
dadosXML.onLoad = function(ok) {
if (ok) {
xmlNode = this.firstChild;
total = xmlNode.childNodes.length;
montaPequeno();
/* Chamamos a função carregaImagem chamando a primeira imagem */
carregaImagem(0,0);
} else {
/* Exibimos uma mensagem de erro caso não carregue o XML */
mensagem.text = "Erro ao Carregar o arquivo XML";
}
};
function montaPequeno() {
/* Variável para posicionar o MovieClip */
var inicio = 0;
/* Criamos um for para cada item do XML */
for (var i = 0; i<total; i++) {
/* Chamamos o MovieClip pequeno */
var mc:MovieClip = recebe.attachMovie("pequeno", "pequeno"+i, recebe.getNextHighestDepth());
/* Pocisionamos ele */
mc._x = inicio*mc._width+10;
/* Incrementamos inicio */
inicio++;
/* Carregamos a imagem pequena */
pequenoMCL.loadClip(xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue,mc.holdp);
/* Deixamos o MovieClip barra com _yscale igual a 0 */
//mc.barra._yscale = 0;
/* Pegamos a imagem */
mc.imagem = i;
//mc._width = 10;
//mc._height = 10;
/* Pegamos a legenda */
mc.legenda = i;
/* Ao pressionar do da Imagem Pequena */
mc.onPress = function() {
/* Se a variável carregado for igual a true */
if (carregado == true) {
/* Carregamos a Imagem selecionada */
carregaImagem(this.imagem,this.legenda);
/* Carregado igual a falso */
carregado = false;
/* Apagamos o texto */
texto.text = "";
}
};
}
/* Verificamos se o ScrollBar é menor que o MovieClip recebe */
if (recebe._width<=scrollBar._width) {
scrollBar.unloadMovie();
}
}
/ Usamos o Listener para saber o progresso do Carregamento /
pequenoListener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
/* Criamos uma variável para saber o quanto carregou */
var carregados:Number = Math.round(loadedBytes/totalBytes*100);
/* Deixamos o MovieClip barra com _yscale igual a variável carregado */
target_mc._parent.barra._yscale = carregados;
};
/ Função para carregar a Imagem grande /
function carregaImagem(arquivo, txt) {
/* Deixamos o MovieClip preloader com _xscale igual a zero */
preloader._xscale = 0;
/* Deixamos o MovieClip preloader visível */
preloader._visible = true;
borda._visible = true;
hold.unloadMovie();
hold._alpha = 0;
/* Carregamos a imagem maior selecionada */
meuMCL.loadClip(xmlNode.childNodes[arquivo].childNodes[1].firstChild.nodeValue,hold);
meuListener.onLoadProgress = function(holdp:Object, bLoad:Number, bTotal:Number) {
var porcentagem:Number = Math.round(bLoad/bTotal*100);
porcento.text = porcentagem+"%";
preloader._xscale = porcentagem;
};
/* Quando terminar de carregar */
meuListener.onLoadInit = function() {
//hold._width = 1000;
//hold._height = 500;
var tww:Tween = new Tween(borda, "_width", Back.easeOut, borda._width, hold._width+16, 1, true);
var twh:Tween = new Tween(borda, "_height", Back.easeOut, borda._height, hold._height+16, 1, true);
var twhx:Tween = new Tween(hold, "_x", Back.easeOut, hold._x, borda._x-hold._width/2, 1, true);
var twhx:Tween = new Tween(hold, "_y", Back.easeOut, hold._y, borda._y-hold._height/2, 1, true);
var twma:Tween = new Tween(mascara, "_y", Back.easeOut, mascara._y, (borda._y+hold._height/2)+16, 1, true);
var twr:Tween = new Tween(recebe, "_y", Back.easeOut, recebe._y, (borda._y+hold._height/2)+16, 1, true);
var twsP:Tween = new Tween(scrollBar, "_y", Back.easeOut, scrollBar._y, (borda._y+hold._height/2)+recebe._height+22, 1, true);
var twtxt:Tween = new Tween(texto, "_y", Back.easeOut, texto._y, (borda._y+hold._height/2)+recebe._height+47, 1, true);
texto.text = xmlNode.childNodes[txt].childNodes[2].firstChild.nodeValue;
/* Quando a variavel twhx acabar de se mover */
twhx.onMotionFinished = function() {
/* Deixamos o MovieClip preloader invisivel */
preloader._visible = false;
borda._visible = false;
porcento.text = "";
var twha:Tween = new Tween(hold, "_alpha", Regular.easeOut, 0, 100, 0.6, true);
/* Quando a variavel twha acabar */
twha.onMotionFinished = function() {
/* Deixamos a variável carregado igual a true */
carregado = true;
};
};
};
}
meuMCL.addListener(meuListener);
pequenoMCL.addListener(pequenoListener);
Tenho um AS que faz com que o usuário do site envie fotos pra conta dele em uma pasta dinamicamente feita pro ID dele a partir do cadastro. O link das fotos vai pro mysql, e um php monta um xml desses link, em que o flash acessa com o AS acima quando alguém entra no perfil do tal usuário, porém é nesse xml que tem o link da foto grande e do thumb, porém no primeiro php não consigo salvar as duas juntas, e no outro, complico, pois teria que mudar o AS que monta as fotos e ai ja nao sei.
abrs
Alguém sabe?
abrs
Complicado
nao seria porque você está salvando as duas imagens com o mesmo nome
tenta mudar o nome da imagem pequena e me diz o que acontece
abraço