изменение размера картинки

  • Автор темы Автор темы blud
  • Дата начала Дата начала

blud

Client
Регистрация
19.04.2011
Сообщения
657
Реакции
77
Баллы
28
нашел на этом форуме сниппет по изменению картинки(не помню тему где нашел, по этому спрашиваю тут.. прошу админов сильно не пинать)
Код:
Развернуть Свернуть Копировать
 Func<int,int,string,Image> displayHex = delegate(int newWidth, int newHeight, string stPhotoPath)
            {
                Image imgPhoto = Image.FromFile(stPhotoPath);

                int sourceWidth = imgPhoto.Width;
                int sourceHeight = imgPhoto.Height;

                //Consider vertical pics
                if (sourceWidth < sourceHeight)
                {
                    int buff = newWidth;

                    newWidth = newHeight;
                    newHeight = buff;
                }

                int sourceX = 0, sourceY = 0, destX = 0, destY = 0;
                float nPercent = 0, nPercentW = 0, nPercentH = 0;

                nPercentW = ((float)newWidth / (float)sourceWidth);
                nPercentH = ((float)newHeight / (float)sourceHeight);
                if (nPercentH < nPercentW)
                {
                    nPercent = nPercentH;
                    destX = System.Convert.ToInt16((newWidth -
                              (sourceWidth * nPercent)) / 2);
                }
                else
                {
                    nPercent = nPercentW;
                    destY = System.Convert.ToInt16((newHeight -
                              (sourceHeight * nPercent)) / 2);
                }

                int destWidth = (int)(sourceWidth * nPercent);
                int destHeight = (int)(sourceHeight * nPercent);


                Bitmap bmPhoto = new Bitmap(newWidth, newHeight,
                              PixelFormat.Format24bppRgb);

                bmPhoto.SetResolution(imgPhoto.HorizontalResolution,
                             imgPhoto.VerticalResolution);

                Graphics grPhoto = Graphics.FromImage(bmPhoto);
                grPhoto.Clear(Color.Black);
                grPhoto.InterpolationMode =
                    InterpolationMode.HighQualityBicubic;

                grPhoto.DrawImage(imgPhoto,
                    new Rectangle(destX, destY, destWidth, destHeight),
                    new Rectangle(sourceX, sourceY, sourceWidth, sourceHeight),
                    GraphicsUnit.Pixel);

                grPhoto.Dispose();
                imgPhoto.Dispose();
                return bmPhoto;
            };

            var x = displayHex(600, 500, "D:\\123.jpg");
            x.Save("D:\\123_new.jpg");

нашел давно, но как то не нужен был, положил в копилку, но сегодня понадобился.. и сразу возник вопрос:
Код:
Развернуть Свернуть Копировать
            var x = displayHex(600, 500, "D:\\123.jpg");
            x.Save("D:\\123_new.jpg");
как правильно настроить пути к картинкам?? делаю так:
Код:
Развернуть Свернуть Копировать
            var x = displayHex(600, 500, "D:\\images\project.Variables["id"].Value.jpg");
            x.Save("D:\\images1\project.Variables["id"].Value_new.jpg");
выдает ошибку.
 
На следующей неделе будет новый билд с новой функцией работы с графикой . Подождите еще чутка)
вотермарки, изменение размеров, повороты, вот это все)

upload_2015-4-24_11-48-58.png
 
На следующей неделе будет новый билд с новой функцией работы с графикой . Подождите еще чутка)
вотермарки, изменение размеров, повороты, вот это все)

Посмотреть вложение 7975
а косяки предыдущего билда (я про многопоточность) исправили??... а то из за этих косяков пришлось откатиться на предыдущий билд...
 
Код мой) Путь надо прокладывать так. Надо
C#:
Развернуть Свернуть Копировать
var x = displayHex(600, 500, "D:\\images\"+project.Variables["id"].Value+".jpg");
x.Save("D:\\images1\"+project.Variables["id"].Value_new+".jpg");
 
  • Оценить
Реакции: blud
а косяки предыдущего билда (я про многопоточность) исправили??... а то из за этих косяков пришлось откатиться на предыдущий билд...
а вы показывали проблему? писать то писали но пока толком ни одного нормального примера по тимвьюеру я не видел(
 
  • Оценить
Реакции: APXOHT
Код мой) Путь надо прокладывать так. Надо
C#:
Развернуть Свернуть Копировать
var x = displayHex(600, 500, "D:\\images\"+project.Variables["id"].Value+".jpg");
x.Save("D:\\images1\"+project.Variables["id"].Value_new+".jpg");
спасибо за код.. и за ответ ...
и сразу возник еще один вопрос(как к автору кода):
а можно сделать так, что бы указывать к примеру только желаемую ширину картинки, а высота изменялась пропорционально???
 
Код мой) Путь надо прокладывать так. Надо
C#:
Развернуть Свернуть Копировать
var x = displayHex(600, 500, "D:\\images\"+project.Variables["id"].Value+".jpg");
x.Save("D:\\images1\"+project.Variables["id"].Value_new+".jpg");
выдает ошибку: "Символ новой строки в константе"
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)