|
|
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
Задача: открыть png с прозрачностью, добавить ему прозрачные поля, рамку по периметру и сохранить обратно в файл не потеряв прозрачность. Как это сделать? Вот такой код Код: pascal 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. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. Даже такой код Код: pascal 1. уже отображает картинку без черного цвета Файл для тренировки в аттаче С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 17:24 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
Вот такой код Код: pascal 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. Танцы с TBitmap нужны, потому что я не понимаю как еще можно отредактировать png ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 18:33 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
А что, у TPngImage нет Canvas-а? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 18:40 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov А что, у TPngImage нет Canvas-а? Но эффект тот же. Черный цвет пропадает Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 20:01 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
Попробуй вообще без Png2. Загрузил в Png1, на нём же нарисовал что-нибудь (хотя бы линию) и тут же сохранил под другим именем. Есть подозрение, что унутре этот Canvas использует таки TBitmap, а тот не поддерживает RGBA от слова "совсем". Если это правда - придётся лезть напрямую в AplhaLines. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 20:14 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov и тут же сохранил под другим именем. Сейчас проблема увеличить изображение и сдвинуть его к центру. Пробую так Код: pascal 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. 50. 51. 52. 53. 54. 55. 56. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2021, 20:28 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
Кажется я уразумел. Header.ColorType = COLOR_PALETTE. Это значит, что в цветах записаны не сами цвета, а индексы в палитре. В палитре записаны три цвета [Red, Black, Black]. А потом говорится, что третий цвет - это прозрачный цвет. Но TPngImage делает преобразование из индекса в цвет, а потому начинает считать, что прозрачный цвет не третий, а черный. И соответственно прозрачным оказывается и второй цвет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 01:00 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, тебе в любом случае сначала нужно получить битмап (в плане растерное изображение), потом нарисовать на нём и уже это сохранять (т.е. преобразовать растр в png) судя по сложности твоей графики адекватно это сделать можно только с помощью GDI+ (GDI те где нить прозрачность убьёт) вот его и смотри, там есть и рисование, и загрузка png, и сохранение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 08:50 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), + за GDI+ С VCL в части растровых графических форматов я бы вообще не связывался, явно не самая удачная часть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 09:20 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
Напрямую изменил палитру у исходного файла и все заработало Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Теперь все это нужно причесать и довести до ума ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 14:21 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, в нашей горячо любимой огненной обезьянке твоя задача решается на раз, и всё из коробки ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:54 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
Всё! Бобик сдох! Я не знаю какой индус писал TPngImage, но редактировать картинку им невозможно в принципе. Читает он более-менее, а модифицировать это полный аллес. Ушел изучать GDI+ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 21:27 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
asutp2 _Vasilisk_, в нашей горячо любимой огненной обезьянке твоя задача решается на раз, и всё из коробки ;-) в вашей бесконечно глючной огненной обезьянке - возможно, что и да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 21:56 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Всё! Бобик сдох! Я не знаю какой индус писал TPngImage, но редактировать картинку им невозможно в принципе. Читает он более-менее, а модифицировать это полный аллес. Ушел изучать GDI+ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 22:21 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Я не знаю какой индус писал TPngImage, но редактировать картинку им невозможно в принципе. Хм... Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 23:56 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Это ты молодец. А теперь подставь картинку из аттача в первом сообщении. В картинке индексированная палитра ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 13:57 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
Все у меня получилось за исключением одного момента Код: pascal 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. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. Исходная картинка у меня имеет глубину цвета 8 бит. И в этом же формате мне нужно ее сохранить. При загрузке она перекодируется в PixelFormat32bppARGB и, соответственно сохраняется она с глубиной цвета 32 бита, . Если для целевого битмапа принудительно задать формат PixelFormat8bppIndexed, то тогда вместо прозрачного цвета я получаю черную заливку. Что нужно подкрутить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 14:04 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
Graphics::Graphics(Image) method This constructor also fails if the image uses one of the following pixel formats:
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 15:19 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, procedure SmoothResize(apng:tpngImage; NuWidth,NuHeight:integer); этим вариантом пробовал? procedure SmoothResize Код: pascal 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. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 15:53 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Что нужно подкрутить? Если нет, то исходники GDI+ В стандарте PNG точно есть 8бит+альфа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 15:53 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
DHDD этим вариантом пробовал? DHDD Код: pascal 1. 2. 3. Соколинский Борис Проверь, может там альфа канал отдельным битом кодируется и его нужно складывать GDI+ мой файл читает и на лету конвертирует в 32-х битный с альфа-каналом. А мне нужно его сохранить как 8-битный с палитрой. При этом, если создать таки такой битмап Код: pascal 1. 2. то я не знаю какую палитру формировать. А создание Graphics с таким объектом (или с форматом PixelFormat16bppARGB1555) обламывается с ошибкой OutOfMemory, потому что Graphics все что меньше 24 бит - не поддерживает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 16:08 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
Пробую готовый битмап сконвертировать в нужный мне формат Код: pascal 1. Конечный файл получается 32 битным Код: pascal 1. Конечный файл получается 8 битным, но с черной заливкой вместо прозрачности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 16:24 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
image1.Picture.LoadFromFile(CFileName); не показывает чёрный квадрат. тоже конвертит? (хотел потестить визуально...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 16:42 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Код: pascal 1. Конечный файл получается 32 битным Более того, исходный код тоже сохраняет 8 бит COLOR_RGBALPHA, хотя PixelFormat у объекта PixelFormat32bppARGB. Т.е. задача решается кодом 22289601 , но с форматами я ничего не понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 17:06 |
|
||
|
Редактирование png
|
|||
|---|---|---|---|
|
#18+
DHDD не показывает чёрный квадрат. DHDD тоже конвертит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 17:08 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=24&tid=2037504]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
86ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 455ms |

| 0 / 0 |
