Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/35: Рейтинг темы: голосов - 35, средняя оценка - 4.89
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
1

Как сделать программно из BMP (JPG, PNG) - ICO

26.06.2012, 18:41. Показов 6515. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как сделать из bmp - ico?
Все мы знаем что есть функция Save у объекта Bitmap.
Что я не пробовал, итог один- при назначении любой форме(любого проекта, собственно это не важно)- иконки - которую я сделал именно программным способом, через функцию сейв - выходит ошибка - студия говорит что это вовсе не иконка.....(может проверить иконку на то что она именно иконка можно и проще - я особо не парился).
Скачивал разные программы которые переделывают любые изображения в любой формат, в том числе и ИСО..и вроде все получается..
Сделав одну такую иконку, присвоил ее одной программе(форме). Перенес ехе на другой комп (где все как нужно в плане исполнительной среды, там даже студия стоит) - и ехешник вываливается, перенес на другой комп (ехешник)- эффект тот же - программа не запускается, появляется табличка мол "закрыть и отладить"....Из любопытства В студии я убрал у формы этой программы эту "иконку"(сделанную через программу конвертер) - и ехешник прекрасно стал запускаться. Получается что и у профессиональных программ не выходит толком переделать изображение в ИСО.

Какой есть выход?

ПС..через код пробовал так: варианты особо друг от друга не отличаются..прошу не смотреть на код в техническом плане, прошу обращать внимание лишь на последние строчки - где и происходит реализация конвертирования. ПРобовал и еще как то..но это сейчас лишь вспомнил.

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
1)
        Dim dr = OpenFileDialog1.ShowDialog()
        If dr = Windows.Forms.DialogResult.OK Then
        PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)
        Dim tmpbmp As Bitmap = Image.FromFile(OpenFileDialog1.FileName)
        Dim tmpbmp_ As New Bitmap(tmpbmp.Width, tmpbmp.Height)
        Dim gr As Graphics = Graphics.FromImage(tmpbmp_)
        Dim ic As Icon = Icon.FromHandle(tmpbmp.GetHicon)
        gr.DrawIcon(ic, 0, 0)
        tmpbmp_.Save("C:\ewq2.ico", Imaging.ImageFormat.Icon)
        gr.Close()
        tmpbmp_.Dispose
        tmpbmp.Dispose
        
        
        2)
        Dim dr = OpenFileDialog1.ShowDialog()
        If dr = Windows.Forms.DialogResult.OK Then
        PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)
        Dim tmpbmp As Bitmap = Image.FromFile(OpenFileDialog1.FileName)
        Dim tmpbmp_ As New Bitmap(tmpbmp.Width, tmpbmp.Height)
        Dim gr As Graphics = Graphics.FromImage(tmpbmp_)
        Dim ic As Icon = Icon.FromHandle(tmpbmp.GetHicon)
        gr.DrawIconUnstretched(ic, New Rectangle(0, 0, tmpbmp.Width, tmpbmp.Height))
        tmpbmp_.Save("C:\ewq2.ico", Imaging.ImageFormat.Icon)
        gr.Close()
        tmpbmp_.Dispose
        tmpbmp.Dispose
        
        
        3)
        Dim dr = OpenFileDialog1.ShowDialog()
        If dr = Windows.Forms.DialogResult.OK Then
        PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)
        Dim tmpbmp As Bitmap = Image.FromFile(OpenFileDialog1.FileName)
        Dim tmpbmp_ As New Bitmap(tmpbmp.Width, tmpbmp.Height)
        Dim gr As Graphics = Graphics.FromImage(tmpbmp_)
        gr.DrawImage(tmpbmp, 0, 0)
        tmpbmp_.Save("C:\ewq2.ico", Imaging.ImageFormat.Icon)
        gr.Close()
        tmpbmp_.Dispose
        tmpbmp.Dispose
        
        
        
        4) Да и просто "тупо так"
    Dim b As Bitmap = Image.FromFile("D:\РАБОЧИЕ_ФАЙЛЫ_ГИДРОРЕЗА\Гидрорез\фото\2_big.jpg")
    b.Save("C:\ewq.ico", Imaging.ImageFormat.Icon)
    b.Dispose()


еще раз повторюсь...что иконку можно сделать и тупо - переименова графический файл ручками, и вроде бы файл и будет иконкой, по крайней мере через визуал студию(при присваивании иконки форме) - студия видит эту (переименнованый файл) иконку но нажав ОК ругается что пикчер не является иконкой, проверял так же на студии ембаркадеро для С++

Надеюсь внятно изложил суть вопроса..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.06.2012, 18:41
Ответы с готовыми решениями:

Как программно создать изображение bmp, jpg
Всем программистам привет! Я тут нашел код создания изображения: procedure...

Преобразовать JPG или PNG в BMP
Есть код: if(clk == "jpg" || clk == "JPG" || clk == "JPEG" || clk == "jpeg") { try { ...

ListView загрузка изображения (jpg, png, bmp)
Всем привет! Всех с праздником! Есть код: FMX procedure TForm1.Button1Click(Sender:...

Сохранение изображения в различных форматах (jpg, png, bmp)
Здравствуйте! Имеется объект класса Image. Как мне выбрать формат сохранения изображения (jpg, bmp,...

15
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
28.06.2012, 18:30  [ТС] 2
ребят, ну неужели не кто не занимался сием вопросом? хотя бы неудачные попытки выложите, не могу решить эту проблему...а нужно
0
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
28.06.2012, 18:35 3
Вот посмотри тут, как раз то что тебе надоhttp://coder000.com/convert-im... in-vb-net/
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
28.06.2012, 19:18  [ТС] 4
не открывается..можешь скинуть или тут выложить код, или что там, статью всю мб
0
Почетный модератор
21413 / 9147 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
28.06.2012, 21:09 5
eJ_Studio, там вот что:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        foD.Filter = "Image Files (*.bmp; *.jpg; *.gif; *.tiff; *.png) | *.bmp;*.jpg;*.gif;*.tiff;*.png"
        foD.ShowDialog()
        Try
            pctSImg.Image = Image.FromFile(foD.FileName)
        Catch ex As Exception
            MessageBox.Show("Please check that you have entered correct filename. If filename is correct the image file might be   corrupt...", "File cannot be loaded", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim img As Bitmap = pctSImg.Image
        img.MakeTransparent(img.GetPixel(0, 0))
        pctDIcn.Image = img
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        fsD.Filter = "Icon (*.ico)|*.ico"
        fsD.ShowDialog()
        Dim img As Bitmap = pctDIcn.Image
        Dim fs As New IO.FileStream(fsD.FileName, IO.FileMode.Create)
        Dim hIcon As IntPtr = img.GetHicon()
        Dim icn As Icon = Icon.FromHandle(hIcon)
        icn.Save(fs)
        fs.Flush()
        icn.Dispose() : fs.Close() : fs = Nothing
        MessageBox.Show("Icon saved successfully", "Congratulations", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Sub
Диалоги добавь.

Полагаю, качество не обрадует
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
29.06.2012, 06:02  [ТС] 6
спасибо
 Комментарий модератора 
Если какой-либо пост на форуме показался вам полезным, нажмите кнопку "Спасибо" внизу самого поста.(Правила п.3.6)
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
30.06.2012, 22:26  [ТС] 7
Памирыч,
ZuMiks, эффект тот же. не работает. Картинка не распознается как иконка
0
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
30.06.2012, 22:37 8
Должно работать, я брал код который ты писал, там не работало, а по коду с ссылки все работает, иконка в студии отображается как надо, но качество изображения желает лучшего!
0
Почетный модератор
21413 / 9147 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
01.07.2012, 00:41 9
Тоже проверял, иконка устанавливается, но в таком виде, что лучше это место в кинескопе жувачькой залепить.

Времени и жгучего желания нет, а так, по идее этот код доработать в следующем плане:
Изображение образует 4 своих копии:
16 х 16
24 х 24
32 х 32
48 х 48
Масштабирование идет качественное, т.е. с
VB.NET
1
g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBilinear
И вся эта кухня сводится в одну иконку.
Это будут полноценные иконки, и здорово бы автоматизировался процесс, а то все это через проги делать уже надоело.
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
01.07.2012, 01:20  [ТС] 10
почему ж у меня то не пашет..памирыч, это предложение доделать проект мне?а че за 4 иконки?все в одной?

Добавлено через 10 минут
и почему не HighQualityBicubic
0
Почетный модератор
21413 / 9147 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
01.07.2012, 01:21 11
Цитата Сообщение от eJ_Studio Посмотреть сообщение
почему ж у меня то не пашет
Может тут еще зависит от входного изображения? Попробуй во вложении, я с ним делал.

Цитата Сообщение от eJ_Studio Посмотреть сообщение
это предложение доделать проект мне?
Это михли флух.


Цитата Сообщение от eJ_Studio Посмотреть сообщение
а че за 4 иконки?все в одной?
Конечно, не бывает иконок, содержащих одно изображение. Иначе это шлак, а не иконка.
Ты же в проводнике можешь выставить отображение - эскизы, список, значки и т.д.
Не знаю как в семите, а в хрюшке какой масштаб, та и иконка показывается, если будет масштабироваться одна - то будут углы и все по-корявому
Вложения
Тип файла: rar 2.rar (12.0 Кб, 48 просмотров)
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
01.07.2012, 01:51  [ТС] 12
Памирыч, скинь лучше проект...чтобы уж точно проверить
0
Почетный модератор
21413 / 9147 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
01.07.2012, 02:17 13
Проект
Вложения
Тип файла: rar Работа с иконками.rar (28.5 Кб, 110 просмотров)
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
01.07.2012, 02:18  [ТС] 14
Цитата Сообщение от Памирыч Посмотреть сообщение
Конечно, не бывает иконок, содержащих одно изображение.
не скрою я об этом не знал. То есть я иногда извлекаю иконки из приложений и там не одна иконка, но это не одно и тоже..от куда я могу знать что в одной иконке еще несколько? как это определить, а самое интересное как это сделать?
0
Почетный модератор
21413 / 9147 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
01.07.2012, 02:22 15
Цитата Сообщение от eJ_Studio Посмотреть сообщение
а самое интересное как это сделать
Посмотреть кто и где можно открыв иконку студией.
А вот сохранять ей не советую, качество станет в разы хуже (или просто я не умею сохранять)

Я юзаю софтинку Микроангело Студио в связке с фотошом, импортирую в микроангело все созданные форматы PNG и сохраняю.
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
01.07.2012, 02:34  [ТС] 16
если проделать все с твоей пнг то вроде как все получается .а если я выбираю другую картинку - то все тоже самое - студия не принимает эту иконку

Добавлено через 4 минуты
да, микроангело тоже знаю, давно еще мне ее советовали и я ее юзал, но так как часто мне иконки не нужны - программа эта уже не стоит на моем компе, да и желание у меня было сделать самому проектдлясебя. для быстрой конвертации изображений..для той же иконки для формы.
0
01.07.2012, 02:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2012, 02:34
Помогаю со студенческими работами здесь

Сохранение изображений в формате png, gif, jpg, bmp
Сохраняя изображение из PictureBox в файл мы получаем несжатый битовый образ независимо от того...

Как вывести в окно картинку jpg, png и др. (кроме .bmp) и звук, кроме WAV
Заранее спасибо за рабочий пример!

Скопировать имеющиеся в каталоге Windows и его подкаталогах растровые графические файлы (имеющие расширения .bmp, .jpg, .gif, .png) в каталог WinGr
Подскажите идею? Знаю как найти эти файлы в каталоге и его подкаталогах. А как эти найденные...

Как преобразовать рисунок из "png" в "bmp" или в "jpg"?
Есть программка, которая ставит обои рабочего стола на выбор пользователя, она может поставить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru