PDA

View Full Version : مشکل در کوچک کردن html image که به صورت runtime به صفحه اضافه میشه



daffy_duck376
جمعه 14 خرداد 1389, 15:08 عصر
سلام دوستان. من یه آدرس یه سری تصاویر رو از بانک میخونم و htmlimage رو به صورت run time اضافه مینم به صفحه . تا اینجا همه چی درسته . فقط یه ایراد داره که نمی تونم سایز تصاویر رو کوچک کنم و یه سایز خاص نمایش بدم همه عکسها بزرگ میشن و سایزی که من میخوام نمی شن. css هم کمکی نکرد . کسی پیشنهادی داره؟

Peyman.Gh
جمعه 14 خرداد 1389, 15:21 عصر
چگونه بصورت RunTime ا Html Image اضافه میکنید ؟!

daffy_duck376
جمعه 14 خرداد 1389, 15:28 عصر
HtmlImage img = new HtmlImage();
img.Src = "picture path";
Panel1.Controls.Add(img)

hamedsabzian
جمعه 14 خرداد 1389, 15:30 عصر
سلام دوستان. من یه آدرس یه سری تصاویر رو از بانک میخونم و htmlimage رو به صورت run time اضافه مینم به صفحه . تا اینجا همه چی درسته . فقط یه ایراد داره که نمی تونم سایز تصاویر رو کوچک کنم و یه سایز خاص نمایش بدم همه عکسها بزرگ میشن و سایزی که من میخوام نمی شن. css هم کمکی نکرد . کسی پیشنهادی داره؟
امید وارم مفید باشه!
http://barnamenevis.org/forum/showthread.php?t=222754&page=2

Peyman.Gh
جمعه 14 خرداد 1389, 15:32 عصر
HtmlImage img = new HtmlImage();
img.Width = 100;
img.Height = 100;
img.Src = "~/Test.jpg";
form1.Controls.Add(img);

daffy_duck376
جمعه 14 خرداد 1389, 15:35 عصر
دوست عزیز پیشنهاد شما خوبه ولی مشکل منو حل نمی کنه. چون باید تصاویر اضافه شده باید به صورت افقی چیده بشن و نه به صورت عمودی . ضمنا بزرگ شدن عکس توی repeater هم اتفاق میفته . فکر کنم بهترین راه به پیشنهاد دوستان با کد نویسی عکس رو Resize کنم .

daffy_duck376
جمعه 14 خرداد 1389, 15:36 عصر
HtmlImage img = new HtmlImage();
img.Width = 100;
img.Height = 100;
img.Src = "~/Test.jpg";
form1.Controls.Add(img);
تاثیری نداره . عکس اگر بزرگ باشه اون هم بزرگ میشه

hamedsabzian
جمعه 14 خرداد 1389, 15:45 عصر
یک صفحه که آدرس عکس و اندازه اون رو می گیره، عکس رو سمت سرور باز می کنه، اندازه ش رو واقعا تغییر میده و یک عکس جدید می سازه. حالا اون رو سمت سرور می فرسته. که بهینه تره.
این Page کد ASP خاصی نداره!
البته می شد به جای یک Page از یک Handler استفاده کرد، به هر حال:
کد ASP:


<%@ Page language="C#‎" Inherits="Thumbnail.MakeThumbnail" CodeFile="MakeThumbnail.aspx.cs" %>

کد C#‎:


using System;
using System.IO;

namespace Thumbnail
{
/// <summary>
/// Creates a thumbnail image from a file spec in the calling URL.
/// </summary>
public partial class MakeThumbnail : System.Web.UI.Page
{
protected void Page_Load(object sender, System.EventArgs e)
{
string file = "";
int size;
int.TryParse(Request.QueryString["size"],out size);
size = (size == 0) ? 100 : size;
try
{
// get the file name -- fall800.jpg
file = Request.QueryString["file"];

if (size == -1)
{
Response.ContentType = "image/jpeg";
Response.WriteFile(file);
}
else
{
// create an image object, using the filename we just retrieved
System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath(file) );
WriteImage(size, image);

}
}
catch
{
System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath("~/GeneralImages/NoPic.jpg"));
WriteImage(size, image);
}
}
private void WriteImage(int size , System.Drawing.Image image)
{
// create the actual thumbnail image
System.Drawing.Image thumbnailImage = image.GetThumbnailImage(size, size, new System.Drawing.Image.GetThumbnailImageAbort(Thumbn ailCallback), IntPtr.Zero);

// make a memory stream to work with the image bytes
MemoryStream imageStream = new MemoryStream();

// put the image into the memory stream
thumbnailImage.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg);

// make byte array the same size as the image
byte[] imageContent = new Byte[imageStream.Length];

// rewind the memory stream
imageStream.Position = 0;

// load the byte array with the image
imageStream.Read(imageContent, 0, (int)imageStream.Length);

// return byte array to caller with image type
Response.ContentType = "image/jpeg";
Response.BinaryWrite(imageContent);
image.Dispose();
thumbnailImage.Dispose();
imageStream.Dispose();
}

/// <summary>
/// Required, but not used
/// </summary>
/// <returns>true</returns>
public bool ThumbnailCallback()
{
return true;
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
}
#endregion
}
}


و
HtmlImage img = new HtmlImage();
img.Src = "MakeThumbnail.aspx?size=100&file=~/Test.jpg";
form1.Controls.Add(img);

Vahid_moghaddam
جمعه 14 خرداد 1389, 16:02 عصر
HtmlImage img = new HtmlImage();
img.Width = 100;
img.Height = 100;
img.Src = "~/Test.jpg";
form1.Controls.Add(img);
من این کدو امتحان کردم. سایز عکس تغییر می کنه و 100*100 نمایش داده می شه

Peyman.Gh
جمعه 14 خرداد 1389, 16:07 عصر
تاثیری نداره . عکس اگر بزرگ باشه اون هم بزرگ میشه

شما امتحان کرده اید ؟!

daffy_duck376
جمعه 14 خرداد 1389, 16:12 عصر
دوستان درست شد ممنون . حالا یه کمک دیگه ! اگر این عکس رو بخوام به صورت لینک در بیارم . چه طوری اوی رو انجام بدم

Peyman.Gh
جمعه 14 خرداد 1389, 16:15 عصر
از ImageButton استفاده کنید.

Vahid_moghaddam
جمعه 14 خرداد 1389, 16:16 عصر
اونها رو در تگ <a> قرار بدید. مثال:

<a href='#' ><img src='Images/first.gif' /></a>

و اگه می خواید دور عکس ها border نیفته، از css زیر استفاده کنید:

a
{
text-decoration:none;
}
a img
{
border:none;
}

daffy_duck376
جمعه 14 خرداد 1389, 16:18 عصر
از ImageButton استفاده کنید.
من میخوام تصاویر رو با light box مثل همین سایت نمایش بدم . ImageButton این امکان رو به من میده؟ چون توی مثال jquary عکس حتما باید لینک باشه

hamedsabzian
جمعه 14 خرداد 1389, 16:19 عصر
از ImageButton استفاده کنید.
و یا :

<a href="URL" ><img src="ImageURL" /></a>

Peyman.Gh
جمعه 14 خرداد 1389, 16:29 عصر
@ Vahid_moghaddam

زمانی که Html Image بصورت Dynamic اضافه میشود به چه صورت میخواهید در بین تگ a قرارش دهید ؟!

Peyman.Gh
جمعه 14 خرداد 1389, 16:33 عصر
اگر این عکس رو بخوام به صورت لینک در بیارم . چه طوری اوی رو انجام بدم
HtmlImage img = new HtmlImage();
img.Width = 100;
img.Height = 100;
img.Src = "~/Test.jpg";
img.Attributes.Add("onclick", "window.open('default.aspx');");
form1.Controls.Add(img);

موفق باشید.

Vahid_moghaddam
جمعه 14 خرداد 1389, 16:36 عصر
شما اگه می خواید چند تا لینک بسازید، برای انعطاف بیشتر می تونید از Literal استفاده کنید. مثلا:

string html="<a href='#'><img .... /></a>";
Literal1.Text=html;

Vahid_moghaddam
جمعه 14 خرداد 1389, 16:39 عصر
@ Vahid_moghaddam

زمانی که Html Image بصورت Dynamic اضافه میشود به چه صورت میخواهید در بین تگ a قرارش دهید ؟!
به این شکل می شه:


HtmlImage img1 = new HtmlImage();
img1.Width = 100;
img1.Height = 100;
img1.Src = "~/2.jpg";


HtmlAnchor a = new HtmlAnchor();
a.HRef = "default.aspx";
a.Controls.Add(img1);
form1.Controls.Add(a);

daffy_duck376
جمعه 14 خرداد 1389, 16:40 عصر
HtmlLink lnk = new HtmlLink();
lnk.Href = "www.google.com";
فقط یه مشکلی هست که نمی دونم چه طوری به کد بالا نسبتش بدم ؟

Vahid_moghaddam
جمعه 14 خرداد 1389, 16:43 عصر
HtmlLink lnk = new HtmlLink();
lnk.Href = "www.google.com";فقط یه مشکلی هست که نمی دونم چه طوری به کد بالا نسبتش بدم ؟

از
HtmlAnchor استفاده کنید. کدش رو یکی دو پست بالاتر گذاشتم. اما به نظر من اگه از Literal استفاده کنید، راحت ترید

daffy_duck376
جمعه 14 خرداد 1389, 16:45 عصر
ممنون از راهنمایی تون . برای استفاده از lightbox باید به خصوصیات لینک rel="lightbox" هم اضافه بشه این رو چی کار کنم ؟

Vahid_moghaddam
جمعه 14 خرداد 1389, 16:47 عصر
با استفاده از Attributes
a.Attributes["rel"] = "lightbox";

daffy_duck376
جمعه 14 خرداد 1389, 16:50 عصر
ممنون از همه دوستان . مشکل به صورت کامل رفع گردید