Jak zmieniłbyś rozmiar obrazu JPEG na stałą szerokość przy zachowaniu proporcji? W prosty sposób, zachowując jakość.Zmień rozmiar obrazu JPEG na stałą szerokość, zachowując jednocześnie proporcje obrazu:
Odpowiedz
Jeśli zmniejszasz szerokość o 25 procent do ustalonej wartości, musisz zmniejszyć wysokość o 25 procent.
Jeśli zwiększasz szerokość o 25 procent do ustalonej wartości, musisz zwiększyć wysokość o 25 procent.
To naprawdę proste.
Myślę, że istnieje mnóstwo próbek tego, jeśli ich szukasz. Oto jeden ja powszechnie używać ...
public static Stream ResizeGdi(Stream stream, System.Drawing.Size size)
{
Image image = Image.FromStream(stream);
int width = image.Width;
int height = image.Height;
int sourceX = 0, sourceY = 0, destX = 0, destY = 0;
float percent = 0, percentWidth = 0, percentHeight = 0;
percentWidth = ((float)size.Width/(float)width);
percentHeight = ((float)size.Height/(float)height);
int destW = 0;
int destH = 0;
if (percentHeight < percentWidth)
{
percent = percentHeight;
}
else
{
percent = percentWidth;
}
destW = (int)(width * percent);
destH = (int)(height * percent);
MemoryStream mStream = new MemoryStream();
if (destW == 0
&& destH == 0)
{
image.Save(mStream, System.Drawing.Imaging.ImageFormat.Jpeg);
return mStream;
}
using (Bitmap bitmap = new Bitmap(destW, destH, System.Drawing.Imaging.PixelFormat.Format48bppRgb))
{
using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(bitmap))
{
//graphics.Clear(Color.Red);
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.DrawImage(image,
new Rectangle(destX, destY, destW, destH),
new Rectangle(sourceX, sourceY, width, height),
GraphicsUnit.Pixel);
}
bitmap.Save(mStream, System.Drawing.Imaging.ImageFormat.Jpeg);
}
mStream.Position = 0;
return mStream as Stream;
}
Przykład kodu wywołującego ...
Stream stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.None);
resizedStream = ImageUtility.ResizeGdi(stream, new System.Drawing.Size(resizeWidth, resizeHeight));
Szybkie wyszukiwanie w projekcie kodu znalazła poniższy artykuł. Umożliwia zmianę rozmiaru obrazów, które akceptują wartość logiczną, aby ograniczyć nowy obraz, aby zachować proporcje oryginału. Nie jestem pewien, jaka jest jakość, ponieważ nie dostarczono zrzutu ekranu. Zobacz artykuł here
zakładając, że istnieje (double width
) Zmienna:
Image imgOriginal = Bitmap.FromFile(path);
double height = (imgOriginal.Height * width)/imgOriginal.Width;
Image imgnew = new Bitmap((int)width, (int)height, PixelFormat.Format32bppArgb);
Graphics g = Graphics.FromImage(imgnew);
g.DrawImage(imgOriginal, new Point[]{new Point(0,0), new Point(width, 0), new Point(0, height)}, new Rectangle(0,0,imgOriginal.Width, imgOriginal.Height), GraphicsUnit.Pixel);
W końcu będziesz miał nowy obraz z WIDTHxHEIGHT więc you'll trzeba opróżnić grafika e zapisać imgnew.
Będzie skalę w osi pionowej tylko:
public static Image ResizeImageFixedWidth(Image imgToResize, int width)
{
int sourceWidth = imgToResize.Width;
int sourceHeight = imgToResize.Height;
float nPercent = ((float)width/(float)sourceWidth);
int destWidth = (int)(sourceWidth * nPercent);
int destHeight = (int)(sourceHeight * nPercent);
Bitmap b = new Bitmap(destWidth, destHeight);
Graphics g = Graphics.FromImage((Image)b);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
g.Dispose();
return (Image)b;
}
- 1. Zmień rozmiar obrazu z JavaScript
- 2. Powiększanie VideoView, aby wypełnić szerokość, zachowując proporcje
- 3. Zmień rozmiar obrazu, aby zmieścił się w ramce ograniczającej
- 4. Zmień rozmiar obrazu w WPF
- 5. Zmień rozmiar obrazu, aby pozostać w widocznym obszarze.
- 6. Zmień rozmiar obrazu przed załadowaniem - jquery
- 7. ImageMagick: Zmień rozmiar obrazu (prostokąt na kwadrat); zachowaj proporcje głównego obiektu
- 8. Kompresja obrazu JPEG
- 9. skalowanie obrazu, ale zachowaj jego proporcje.
- 10. Zachowaj proporcje obrazu w karuzeli
- 11. iPhone uzyskać szerokość i rozmiar obrazu
- 12. Zachowaj proporcje obrazu z ustaloną wysokością
- 13. Tkinter zmienia rozmiar obrazu tła na rozmiar okna (Python 3.4)
- 14. Java zmiany rozmiaru obrazu, utrzymać proporcje
- 15. Przykładowy karuzela na Twitterze 2.2: jak zachować proporcje obrazu?
- 16. Rozmiar obrazu do pojemnika przy zachowaniu proporcji w CSS?
- 17. Wymuś obraz, aby zmieścił się i zachował proporcje obrazu
- 18. CSS: Pełny rozmiar obrazu tła
- 19. Jak skompresować rozmiar obrazu?
- 20. Android CustomWebChromeClient openFileChooser Zmień rozmiar obrazu przed przesłaniem
- 21. LinearLayout ImageView Zmień rozmiar wszystkich szerokości obrazu tak, aby pasował
- 22. Jak zrobić obraz tak duży, jak to możliwe, zachowując proporcje obrazu
- 23. rozmiar obrazu tła iphone
- 24. Rozmiar obrazu (Python, OpenCV)
- 25. Rozmiar obrazu Matlaba
- 26. Zmień rozmiar obrazu, aby zmieścił się w dziale
- 27. skalowania obrazu do maksymalnej dostępnej szerokości, zachowując proporcje i unikanie ImageView dodatkową przestrzeń
- 28. Jak zachować proporcje na przyciskach obrazu w systemie Android?
- 29. Płótno JavaScript - zmień krycie obrazu
- 30. Szerokość i wysokość obrazu IE = 0 przed pobraniem obrazu
chce zachować stałą szerokość, to nie będzie działać – rboarman