Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gUiTaR_mAn

redimensionar imagem

Recommended Posts

olá pessoal...

não sei se isto é possível... mãããsss... creio que seja, pois o Google Images parece usar alguma coisa assim...

bom, é o seguinte...

 

tenho um campo de comentário onde o usuario poderá inserir texto e URL de imagens de qualquer site...

o sistema então pega a url e imprime a imagem na tela.

 

é como se eu digitasse:

http://forum.imasters.com.br/style_emo...efault/clap.gif

e aparecesse:

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

 

o problema é que estou com medo de ter algum usuário maluco que vá lá e coloque a URL de uma imagem gigante!!

issu ia, alem de distorcer o sistema ainda iria demorar um tempão pra abrir a imagem...

 

eu pensei em colocar um tamanho padrao no width para as imagens serem exibidas... isso impede que o site seja distorcido, mas não impede que demore um seculo pra abrir a imagem...

 

entao... aí vem a minha pergunta...

tem como eu ler a url da imagem que o camarada digitou e criar uma copia reduzida dela só pra exibir no site, sem precisar salvar no meu servidor???

 

espero que tenham entendido...

e agradeço muito se puderem me ajudar

 

obrigado! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

OBS: sou programador asp, mas nunca tive nenhum contato com asp.net

estou pesquisando aqui pois responderam que é possivel fazer issu com asp.net chamando uma pagina nessa forma:

<ims src="thumb.aspx?src=imagem.jpg">

e aí dentro ela usa um tal de DownloadFile do WebClient... e redimensionar com asp.net

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom tenta mexer com este codigo que eu fiz (com ajuda da net)

 

using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

public partial class GeraTumbNail : System.Web.UI.Page
{
	int imgID;

	System.Drawing.Image g;
	System.Drawing.Image.GetThumbnailImageAbort cb;
	System.IntPtr cbd;

	protected void Page_Load(object sender, EventArgs e)
	{
		imgID = Convert.ToInt32(Request.QueryString["idImagem"]);

		MemoryStream ms = null;
		System.Drawing.Image fullsizeImage = null;
		


		DatasetDuraesTableAdapters.imagensTableAdapter imagem = new DatasetDuraesTableAdapters.imagensTableAdapter();
		DatasetDuraes.imagensRow img = imagem.ListaImagemById(imgID).FindByImageId(imgID);

		byte[] imgBytes = img.Bytes;


		ms = new MemoryStream(imgBytes);
		fullsizeImage = System.Drawing.Image.FromStream(ms);


		Response.ContentType = "image/jpg";

		/*MaxW = OriImg.Width
		maxH = Convert.ToInt32(OriImg.Height * MaxW / OriImg.Width)
		 * 
		 * maxW = Convert.ToInt32(OriImg. Width * MaxW / OriImg. Height)
		 */
		int MaxH = (fullsizeImage.Height * 250 / fullsizeImage.Width);
		int maxW = (fullsizeImage.Width * 250 / fullsizeImage.Height);

		Size tamImg = new Size(250,250);



		fullsizeImage.GetThumbnailImage(tamImg.Width, tamImg.Height, cb, cbd).Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); 

		
		Response.End();

Compartilhar este post


Link para o post
Compartilhar em outros sites

phmd2004... esse código deve ser para redimensionar neh...

com certeza vai ser muito útil depois que eu conseguir concluir a primeira etapa dessa missao...

 

quintelab... estou vendo os sites que você apontou...

talvês seja porque eu nunca mexi com asp.net; eu não estou intendendo como issu funciona...

ele copia a imagem pra dentro do meu server pra que eu possa trabalhar com ela? ou somente carrega temporariamente pra mim fazer o que eu quero?

pelo que entedi ele deve usar o método OpenWrite soh pra carregar a imagem neh?

no primeiro site que você me passou ele mostra varias formas (Visual Basic Declaration, Visual Basic Usage, C#, Visual C++, J#, JScript)... creio que isto sejam as formas de se fazer issu em várias linguagens diferentes... em qual devo me basear pra fazer issu em asp.net?

 

agradeço muito a ajuda de vcs

continuo no aguardo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae galéra...

axei esse código na net:

 

// --------------------------------------------------------
// Resgatando e alterando uma imagem via URL
// --------------------------------------------------------

WebClient webclient = new WebClient();
using(Stream stream = webclient.OpenRead("http://lisar.larc.nasa.gov/IMAGES/MEDIUM/EL-1997-00031.jpeg"))
{
	System.Drawing.Image image = System.Drawing.Image.FromStream(stream);
	Graphics draw = Graphics.FromImage( image );

	// Coordenadas X,Y usadas no DrawEllipse 
	int X = Convert.ToInt32( (image.Width / 2) );
	int Y = Convert.ToInt32( (image.Height / 2) );

	//Desenha um circulo verde no meio da imagem
	draw.DrawEllipse(new Pen(Color.Green, 10), X, Y, 80,80);

	// Coordenadas X,Y onde haverá escrita na imagem 
	X = Convert.ToInt32( ( ( image.Width / 2 ) - 40 ) );
	Y = Convert.ToInt32( ( ( image.Height / 2 ) + ( image.Height / 3 ) ) );
	
	Font font = new Font("Arial", 40);
	StringFormat sf = new StringFormat();			
	draw.DrawString("http://weblogs.pontonetpt.com/paseixas", font, Brushes.Blue, X, Y, sf);

	Response.ContentType="image/jpeg";
	image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
	image.Dispose();
}

o autor só salientou que deve-se importar as classes abaixo:

using System.Net;

using System.IO;

using System.Drawing;

aff... como faço issu?

alguém pode me ajudar a deixar esse codigo pronto pra rodar?

 

aguardo....

Compartilhar este post


Link para o post
Compartilhar em outros sites

No formulário onde estiver utilizando este código, no topo dele caso esteja usando o C#, basta colocar como o Autor citou:

using System.Net;
using System.IO;
using System.Drawing;

Você deve colocar nas primeiras linhas do seu formulário, antes de tudo.

Caso esteja usando o VB, substitua o código do autor por este:

Imports System.Net
Imports System.IO
Imports System.Drawing

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

quintelab.... fiz o que você disse.. meu código ficou assim

 

foto.aspx

<%@ Page Language="VB" %>

<script language="VB" runat="server">
Imports System.Net
Imports System.IO
Imports System.Drawing

WebClient webclient = new WebClient();
using(Stream stream = webclient.OpenRead("http://www.google.com.br/intl/pt-BR_br/images/logo.gif"))
{
	System.Drawing.Image image = System.Drawing.Image.FromStream(stream);
	Graphics draw = Graphics.FromImage( image );

	int X = Convert.ToInt32( (image.Width / 2) );
	int Y = Convert.ToInt32( (image.Height / 2) );

	draw.DrawEllipse(new Pen(Color.Green, 10), X, Y, 80,80);
0
	X = Convert.ToInt32( ( ( image.Width / 2 ) - 40 ) );
	Y = Convert.ToInt32( ( ( image.Height / 2 ) + ( image.Height / 3 ) ) );
	
	Font font = new Font("Arial", 40);
	StringFormat sf = new StringFormat();			
	draw.DrawString("http://weblogs.pontonetpt.com/paseixas", font, Brushes.Blue, X, Y, sf);

	Response.ContentType="image/jpeg";
	image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
	image.Dispose();
} 

End Sub
</script>

joguei no server e tentei executar essa página...

me retornou o seguinte erro:

 

Server Error in '/' Application.

--------------------------------------------------------------------------------

 

Runtime Error

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

 

Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".

 

 

<!-- Web.Config Configuration File -->

 

<configuration>

<system.web>

<customErrors mode="Off"/>

</system.web>

</configuration>

 

 

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.

 

 

<!-- Web.Config Configuration File -->

 

<configuration>

<system.web>

<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>

</system.web>

</configuration>

 

o que pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa... rodei local e deu o seguinte erro:

 

Compiler Error Message: BC30465: 'Imports' statements must precede any declarations.

 

Line 2: <script runat="server">

Line 3:

Line 4: Imports System.Net

Line 5: Imports System.IO

Line 6: Imports System.Drawing

 

Source File: D:\websites\foto.aspx Line: 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu só fui reparar agora, você esta fazendo uma página em VB, mas copiou aquela parte do código que esta em C#, não pode deixar tudo junto. Não irá funcionar, você esta misturando VB com C#. Para Utilizar os namespace como o autor citou faça assim:

 

<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Drawing" %>

<script language="VB" runat="server">

</script>

Mas terá que converter este código, ou procurar um exemplo que esteja em VB.

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

putz.... complicado velho

ja revirei o google procurando algum codigo pra issu e a única coisa que achei foi isso...

 

se alguém aí conseguir converter esse código pra mim eu fico mto grato....

 

vou procurar uma otra sessao no forum pra pedir esse help tb

 

obrigado...

 

e.. fiko no aguardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.