Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Solovei95
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 14
#1

Генерация PNG (проблема) - C++

20.06.2011, 12:37. Просмотров 653. Ответов 2
Метки нет (Все метки)

Код
//test3.cpp
//----------------------------------------------------------
//
#pragma pack(1)

#include <stdio.h>
#include <stdlib.h>

struct _IHDR
{
  unsigned long  pngWidth;
  unsigned long  pngHeight;
  unsigned char pngBitDepth;
  unsigned char pngColorType;
  unsigned char pngComType;
  unsigned char pngFilMeth;
  unsigned char pngIntMeth;
};

int main(int argc, char** argv)
{
  _IHDR ihdr = {256,256,8,6,0,0,0};
  char szOut[16] = "test.png";
  unsigned int  img[256][256];
  unsigned int  x, y;
  unsigned int  r, g, b, a;
  unsigned int  r2, g2, b2, a2;
  FILE        * f2;

  // draw gradiend
  for (y=0; y<256; y++)
  for (x=0; x<256; x++)
  {
    a = (255*x)/256;
    r = 0;
    g = 192;
    b = 0;

	r2 = (0*(255-a)+r*a)/255;
	g2 = (192*(255-a)+g*a)/255;
	b2 = (255*(255-a)+b*a)/255;
	a2 = 255;

    img[y][x] = (a2<<24) + (r2<<16) + (g2<<8) + b2;
  }

  // save tga
  if ((f2 = fopen(szOut, "wb")) != 0) 
  {

	fwrite("IHDR", 4, 1, f2);
	fwrite(&ihdr, sizeof(ihdr), 1, f2);
	fwrite("IDAT", 4, 1, f2);
	for (y=0; y<256; y++){
    fwrite(&img[256-1-y][0], 256*4, 1, f2);
	}
	fwrite("IEND", 4, 1, f2);
    fclose(f2);
  }

  printf("OK\n");
  return 0;
}
Я не могу сгенерировать корректный PNG файл! Помагите!

Добавлено через 29 минут
Блин, ну помагите, а?
Помочь сложно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2011, 12:37     Генерация PNG (проблема)
Посмотрите здесь:

Считывание PNG - C++
Здравствуйте,форумчане) Пытаюсь прочитать PNG файл,вообще убейте не понимаю почему не работает.Даже длину и ширину нормально не...

Read PNG in C - C++
Всем привет. Подскажите как на С (без привлечения сторонних библиотек) прочитать PNG файл. В конечном итоге хотелось бы получить...

Чтение PNG файла - C++
описал структуру заголовка чанка struct _PNG_ChunkHead { unsigned int _length; char _type; }; после чтения чанка IHDR...

Конвектор png в jpg - C++
Хочу написать прогу для конвертирования png формата изображения в jpg формат изображения. Можете объяснить как это реализуется, дать ссылки...

Вывод png изображения на экран - C++
Здравствуйте уважаемые программисты! Подскажите как вывести png изображение на экран. Потом еще нужно будет вращать его на произвольный...

Спрятать сообщение в png файл - C++
Работал с BMP файлом - там всё просто. Но с png возникли трудности - формат сжатый, а именно zlib. Что делать? Как спрятать текст в png...

Вставить картинку png (Glut) С++ - C++
Вообщем написал змейку с помощью glut. Все работает прекрасно. Решил заменить квадраты (которые ест змейка) на картинки яблок. Начал...

ActiveX для просмотра PNG - C++
Подскажите, где можно взять ActiveX для просмотра PNG?

Нужно сохранить результат в png, a не в bmp - C++
Вот мой код, сохраняющий рисунок(фиолетовый квадрат) в bmp#include &lt;string&gt; #include &lt;vector&gt; #include &lt;cmath&gt; #include &lt;limits&gt; ...

Загрузка изображений png файлов в CListCtrl - C++
Добрый день! Имеется следующая задача. В папке содержится н-ое число файлов типа png, необходимо отобразить эти рисунки в...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
1904 / 1436 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
20.06.2011, 12:46     Генерация PNG (проблема) #2
Во-первых PNG файл начинается с 8-байтовой сигнатуры, которой здесь нет.
Во-вторых, каждый chunk должен начинаться размером данных этого чанка, а завершаться CRC.
В-третьих, многобайтовые числа записываются от старшего к младшему.
Ну и в четвёртых, а что, готовую библиотеку никак нельзя?
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
20.06.2011, 13:26     Генерация PNG (проблема) #3
Используй библиотеку libgd
А то что ты тут нарисовал - фигня полная
Yandex
Объявления
20.06.2011, 13:26     Генерация PNG (проблема)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru