Asp.Net: динамическое изменение размера изображения
Я хочу создать механизм изменения размера изображения для моего проекта на сайте Asp.Net, такой как timthumb. Я хочу сделать это:
- Загрузить изображение
- Установить размер
- Если мне нужен другой размер этого изображения, я могу указать "только" размер без загрузки снова.
Как я могу это сделать, у вас есть предложения?
Вот моя функция изменения размера:
public Bitmap Resize(Bitmap image, int newWidth, int newHeight, string message)
{
try
{
Bitmap newImage = new Bitmap(newWidth, Calculations(image.Width, image.Height, newWidth));
using (Graphics gr = Graphics.FromImage(newImage))
{
gr.SmoothingMode = SmoothingMode.AntiAlias;
gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
gr.DrawImage(image, new Rectangle(0, 0, newImage.Width, newImage.Height));
var myBrush = new SolidBrush(Color.FromArgb(64, 205, 205, 205));
double diagonal = Math.Sqrt(newImage.Width * newImage.Width + newImage.Height * newImage.Height);
var containerBox = new Rectangle();
containerBox.X = (int)(diagonal / 10);
var messageLength = (float)(diagonal / message.Length * 1);
containerBox.Y = -(int)(messageLength / 1.6);
var stringFont = new Font("verdana", messageLength);
var sf = new StringFormat();
var slope = (float)(Math.Atan2(newImage.Height, newImage.Width) * 180 / Math.PI);
gr.RotateTransform(slope);
gr.DrawString(message, stringFont, myBrush, containerBox, sf);
return newImage;
}
}
catch (Exception exc)
{
throw exc;
}
}
public int Calculations(decimal orjWidth, decimal orjHeight, int newWidth)
{
decimal height = 0;
decimal ratio = 0;
if (newWidth < orjWidth)
{
ratio = orjWidth / newWidth;
height = orjHeight / ratio;
return height.To<int>();
}
if (orjWidth <= newWidth)
{
ratio = newWidth / orjWidth;
height = orjHeight * ratio;
return height.To<int>();
}
return height.To<int>();
}
2 ответа
Это делается с помощью сценариев jQuery.
Вы можете добиться того же эффекта динамического изменения размера фонового изображения, используя некоторые из доступных плагинов jQuery. Например: http://srobbin.com/jquery-plugins/backstretch/
Кроме того, это можно сделать с помощью простого CSS3: https://css-tricks.com/perfect-full-page-background-image/ уважением, Партнерская команда templateMonster!
Вы ищете библиотеку ImageResizer и httpmodule
Если вы используете NuGet, вы можете Install-Package ImageResizer.MvcWebConfig