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

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

26.06.2012, 18:41. Показов 6675. Ответов 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.06.2012, 18:41
Ответы с готовыми решениями:

Как программно создать изображение bmp, jpg
Всем программистам привет! Я тут нашел код создания изображения: procedure TForm1.FormCreate(Sender: TObject); var img : TBitmap; ...

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

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

15
 Аватар для eJ_Studio
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
28.06.2012, 18:30  [ТС]
ребят, ну неужели не кто не занимался сием вопросом? хотя бы неудачные попытки выложите, не могу решить эту проблему...а нужно
0
 Аватар для ZuMiks
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
28.06.2012, 18:35
Вот посмотри тут, как раз то что тебе надоhttp://coder000.com/convert-im... in-vb-net/
0
 Аватар для eJ_Studio
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
28.06.2012, 19:18  [ТС]
не открывается..можешь скинуть или тут выложить код, или что там, статью всю мб
0
Почетный модератор
 Аватар для Памирыч
23246 / 9158 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
28.06.2012, 21:09
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
 Аватар для eJ_Studio
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
29.06.2012, 06:02  [ТС]
спасибо
 Комментарий модератора 
Если какой-либо пост на форуме показался вам полезным, нажмите кнопку "Спасибо" внизу самого поста.(Правила п.3.6)
0
 Аватар для eJ_Studio
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
30.06.2012, 22:26  [ТС]
Памирыч,
ZuMiks, эффект тот же. не работает. Картинка не распознается как иконка
0
 Аватар для ZuMiks
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
30.06.2012, 22:37
Должно работать, я брал код который ты писал, там не работало, а по коду с ссылки все работает, иконка в студии отображается как надо, но качество изображения желает лучшего!
0
Почетный модератор
 Аватар для Памирыч
23246 / 9158 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
01.07.2012, 00:41
Тоже проверял, иконка устанавливается, но в таком виде, что лучше это место в кинескопе жувачькой залепить.

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

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

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


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

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

Добавлено через 4 минуты
да, микроангело тоже знаю, давно еще мне ее советовали и я ее юзал, но так как часто мне иконки не нужны - программа эта уже не стоит на моем компе, да и желание у меня было сделать самому проектдлясебя. для быстрой конвертации изображений..для той же иконки для формы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.07.2012, 02:34
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер