Imam jedan problem i nadam se da netko zna rjesenje :)
Naime, imam funkciju koja croppa sliku na odredjene dimeznije, ali mi se ne ponasa isto kada je site na online serveru ili kad ju testiram u lokalu.
Funkcija pozvana na serveru/slika spremljena na server(winhost.com):

Funkcija testirana u localhostu/slika spremljena na localdisc (Virtual server):

Primjetite razliku u kvaliteti? A koristena je ista slika i ista funkcija
Metode (CropImageFile() je metoda koja cropa sliku)
Code:
//Crops Image
public static void CropImageFile(string ImageFrom, string ImageTo, int targetW, int targetH)
{
System.Drawing.Image imgPhoto = System.Drawing.Image.FromFile(ImageFrom);
int targetX = (imgPhoto.Width - targetW) / 2;
int targetY = (imgPhoto.Height - targetH) / 2;
Bitmap bmPhoto = new Bitmap(targetW, targetH, PixelFormat.Format48bppRgb);
bmPhoto.SetResolution(72, 72);
Graphics grPhoto = Graphics.FromImage(bmPhoto);
grPhoto.SmoothingMode = SmoothingMode.AntiAlias;
grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;
grPhoto.PixelOffsetMode = PixelOffsetMode.HighQuality;
grPhoto.DrawImage
(
imgPhoto,
new Rectangle(0, 0, targetW, targetH),
targetX,
targetY,
targetW,
targetH,
GraphicsUnit.Pixel
);
// Save out to memory and then to a file. We dispose of all objects to make sure the files don't stay locked.
EncoderParameters ep = new EncoderParameters(1);
ep.Param[0] = new EncoderParameter(Encoder.Quality, (long)100);
ImageCodecInfo ici = GetEncoderInfo("image/jpeg");
imgPhoto.Dispose();
grPhoto.Dispose();
bmPhoto.Save(ImageTo, ici, ep);
bmPhoto.Dispose();
}
//CodecInfo
private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
//Crops Image
public static void CropImageFile(string ImageFrom, string ImageTo, int targetW, int targetH)
{
System.Drawing.Image imgPhoto = System.Drawing.Image.FromFile(ImageFrom);
int targetX = (imgPhoto.Width - targetW) / 2;
int targetY = (imgPhoto.Height - targetH) / 2;
Bitmap bmPhoto = new Bitmap(targetW, targetH, PixelFormat.Format48bppRgb);
bmPhoto.SetResolution(72, 72);
Graphics grPhoto = Graphics.FromImage(bmPhoto);
grPhoto.SmoothingMode = SmoothingMode.AntiAlias;
grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;
grPhoto.PixelOffsetMode = PixelOffsetMode.HighQuality;
grPhoto.DrawImage
(
imgPhoto,
new Rectangle(0, 0, targetW, targetH),
targetX,
targetY,
targetW,
targetH,
GraphicsUnit.Pixel
);
// Save out to memory and then to a file. We dispose of all objects to make sure the files don't stay locked.
EncoderParameters ep = new EncoderParameters(1);
ep.Param[0] = new EncoderParameter(Encoder.Quality, (long)100);
ImageCodecInfo ici = GetEncoderInfo("image/jpeg");
imgPhoto.Dispose();
grPhoto.Dispose();
bmPhoto.Save(ImageTo, ici, ep);
bmPhoto.Dispose();
}
//CodecInfo
private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
Hvala unaprijed.
Pozz
[Ovu poruku je menjao kravko dana 03.12.2011. u 13:30 GMT+1]