254 / 21 / 5
Регистрация: 30.10.2008
Сообщений: 68
1

libpng, ошибка в png_write_png

21.07.2011, 20:53. Показов 1013. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При вызове png_write_png вылетает ошибка:

Необработанное исключение в "0x779d8da9" в "pngtest.exe": 0xC0000005: Нарушение прав доступа при записи "0x00000014".
Код:
C
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
78
79
#define _CRT_SECURE_NO_WARNINGS
 
#include "png.h"
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <setjmp.h>
 
 
png_structp png_ptr;
png_infop info_ptr;
png_bytepp rows;
 
int create_image(int height, int width);
void delete_image(int height);
 
int main() {
    int w = 320, h = 240;
 
    FILE* fp = fopen("out.png", "wb");
    if(!fp) {
        printf("err");
        return 0;
    }
 
    
    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
    if(!png_ptr) {
        printf("err");
        return 0;
    }
 
    info_ptr = png_create_info_struct(png_ptr);
    if(!info_ptr) {
        printf("err");
        return 0;
    }
 
    png_init_io(png_ptr, fp);
    png_set_filter(png_ptr, 0, PNG_FILTER_NONE);
    png_set_IHDR(png_ptr, info_ptr, w, h, 8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
    
    if(!create_image(w, h)) {
        printf("err");
        return 0;
    }
 
    png_set_rows(png_ptr, info_ptr, rows);
    png_write_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NULL); //<-- вылетает здесь
    png_destroy_write_struct(&png_ptr, &info_ptr);
    delete_image(h);
    fclose(fp);
 
    return 0;
}
 
 
int create_image(int width, int height) { 
    rows = (png_bytepp) png_malloc(png_ptr, sizeof(png_bytep) * height);
    if(!rows) {
        return 0;
    }
    for(int i = 0; i < height; i++) {
        rows[i] = (png_bytep) png_malloc(png_ptr, sizeof(png_byte)*width*3);
        if(!rows[i]) {
            return 0;
        }
        memset(rows[i], 255, sizeof(png_byte)*width*3);
    }
    return 1;
}
 
void delete_image(int height) {
    for (int i = 0; i < height; i++) {
        png_free(png_ptr, rows[i]);
    }
    png_free(png_ptr, rows);
}
Глубокий дебаг показал, что валится в pngwio.c, 58 строка
C
1
 check = fwrite(data, 1, length, (png_FILE_p)(png_ptr->io_ptr));
Кто-нибудь сталкивался с таким?
VS2010, libpng(1.54) собирал в ней же.

Добавлено через 1 час 6 минут
Собрал в release, взлетело.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.07.2011, 20:53
Ответы с готовыми решениями:

Ошибка: libpng warning: Incorrect bKGD chunk length
Добрый день! при запуске приложения вылезает ошибка libpng warning: Incorrect bKGD chunk length...

Установка libpng
Хочу сделать простенькую 2d игру на OpenGL. Уже умею рисовать квады и &quot;натягивать&quot; на них bmp...

Libpng, не работает на VS 2017
Установил libpng, последнюю стабильную версию 1.6.28.1 на Mictosoft Visual Studio 2017 с помощью...

Как подключить libpng в VS 2010?
Нужно сохранить результат в png при помощи libpng, начал подключать #include &lt;png.h&gt; VS 2010 пишет...

0
21.07.2011, 20:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2011, 20:53
Помогаю со студенческими работами здесь

MinGW for Windows - libpng ./configure - error: zlib not installed
подробней написано по ссылке: https://www.cyberforum.ru/cpp-beginners/thread639137.html ...

MinGW for Windows - libpng ./configure - error: zlib not installed
Пользуюсь MinGW for Windows. Устанавливалось согласно этого мануала:...

IIS- asp ошибка: HTTP 500.100 - Внутренняя ошибка сервера - ошибка ASP Internet Information Services
Привет! Конфигурация win2000pro sp2, стандартный IIS, IE 5. При попытке обратиться к...

Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка записи!
Доброго всем времени суток! подскажи пожалуйста как исправить ошибку: Ошибка при чтении изменений...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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