2013-10-04 5 views
2

Как изменить размер до 100 пикселей на 100 пикселей и сохранить изображение в картинке как PNG? Я могу сделать сохранение, но выходной файл не откроется. Код, который у меня есть, ниже.Изменить размер и сохранить изображение в Picturebox как PNG

picbox.Image.Save("example_file", System.Drawing.Imaging.ImageFormat.Png) 
+0

Следует отметить, что если исходное изображение/квадратик не является квадратным, возможно, вы захотите масштабировать изображение, а не делать явный 100x100 палец, чтобы он не искажался. – Plutonix

+0

Как масштабировать изображение? Я еще не знаком с графическими манипуляциями в .net. –

+0

Это не ЧИСТАЯ вещь, масштабирование - это просто арифметика. Вам просто нужно сделать какое-то простое разделение, прежде чем рисовать. Попробуйте и поставите вопрос, если вы застряли. – Plutonix

ответ

2

Основы для миниатюры довольно прямо вперед:

  1. Создать новое растровое изображение нужного размера
  2. Нарисовать оригинал к нему; Обращаясь к меньшему BMP, миниатюра

Для сохранения вы можете добавить «.png» к имени файла. Так как ваше изображение в picbox, получить его за меньшие ввода:

Dim bmp As Bitmap = CType(picbox.Image, Bitmap) 

' bmpt is the thumbnail 
Dim bmpt As New Bitmap(100, 100) 
Using g As Graphics = Graphics.FromImage(bmpt) 

    ' draw the original image to the smaller thumb 
    g.DrawImage(bmp, 0, 0, 
       bmpt.Width + 1, 
       bmpt.Height + 1) 
End Using 

bmpt.Save("example_file.PNG", System.Drawing.Imaging.ImageFormat.Png) 

Примечания:

  1. Bitmap вы создаете должны быть утилизированы, когда вы сделали с ним.
    • Если сохранить все, что вам нужно сделать, добавьте bmpt.Dispose() в качестве последней строки.
    • Если вышеприведенный метод используется для возврата эскиза, то код, который получает новый эскиз, должен утилизировать его.
  2. Если исходное изображение открыто (например, показано в PictureBox), вы не сможете сохранить его с тем же именем. Измените имя немного, например «myFoo», сохраненное как «myFoo_t».
  3. Приведенный выше код предполагает квадратное изображение. Если высота и ширина не совпадают, вам также необходимо масштабировать растровое изображение миниатюр, чтобы предотвратить искажение эскиза. То есть, вычисляйте либо высоту, либо ширину нового Bitmap от другого.
Смежные вопросы