djvuapi : ddjvu_page_render (Возвращает ошибку.)

Модератор: Модераторы разделов

kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

djvuapi : ddjvu_page_render

Сообщение kinder »

Я попытался в некоторой степени повторить последовательность действий утилиты ddjvu при сохранении страницы в tiff формате.
Вероятно я где напутал при рассмотрении кучки условий в функции void render(ddjvu_page_t *page, int pageno) из файла ddjvu.cpp, ибо я пытался выделить из всего этого нагромождения только то что касалось сохранения в тифф.

ddjvu_page_render() возвращает false

Код: Выделить всё

void my_func(int pageno, ddjvu_pageinfo_t *info, ddjvu_document_t *m_djvu_document){

  ddjvu_rect_t prect;
  ddjvu_rect_t rrect;
  ddjvu_format_t *fmt;
  ddjvu_format_style_t style;
  char *image = 0;
  int rowsize;

  int iw = info->width;
  int ih = info->height;
  int dpi = info->dpi;

  ddjvu_page_t *page;

  if (! (page = ddjvu_page_create_by_pageno(m_djvu_document, pageno-1))) return;

  ddjvu_page_type_t type = ddjvu_page_get_type(page);


  /* Process size specification */
  prect.x = 0;
  prect.y = 0;
  prect.w = iw;
  prect.h = ih;

  /* Process aspect ratio */
  double dw = (double)iw / prect.w;
  double dh = (double)ih / prect.h;
  if (dw > dh)
    prect.h = (int)(ih / dw);
  else
    prect.w = (int)(iw / dh);

  /* Process segment specification */
  rrect = prect;

  style=DDJVU_FORMAT_RGB24;
    if((type==DDJVU_PAGETYPE_BITONAL))
    {
      style = DDJVU_FORMAT_GREY8;
      if ((int)prect.w == iw && (int)prect.h == ih)
        style = DDJVU_FORMAT_MSBTOLSB;
    }

  if (! (fmt = ddjvu_format_create(style, 0, 0))) return;

  ddjvu_format_set_row_order(fmt, 1);

  /* Allocate buffer */
  rowsize = rrect.w * 3;
  if (! (image = (char*)malloc(rowsize * rrect.h))) return;

  /* Render */
  if (! ddjvu_page_render(page, DDJVU_RENDER_COLOR, &prect, &rrect, fmt, rowsize, image))
    QMessageBox::warning(this, trUtf8("ddjvu_page_render return false"), QString::number(pageno));
//    memset(image, 0xFF, rowsize * rrect.h);

}
Спасибо сказали:
kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

Re: djvuapi : ddjvu_page_render

Сообщение kinder »

Или где можно посмотреть простой пример извлечения растра страницы из djvu книги по средствам djvuapi?
Спасибо сказали:
kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

Re: djvuapi : ddjvu_page_render

Сообщение kinder »

Я что то не понимаю. Ошибка происходит на пустом месте.

Если я перед вызовом ddjvu_page_render() воткну QMessageBox::warning(this, "hello", "hello"); то ddjvu_page_render() отрабатывает без ошибки. Но при чём тут миседж бокс я не понимаю. Да и не улыбается мне такая перспектива перед обработкой каждой страницы миседжбоксы выводить :-)
Спасибо сказали:
MakkyWelly
Сообщения: 97
ОС: по обстоятельствам :)

Re: djvuapi : ddjvu_page_render

Сообщение MakkyWelly »

Может вот отсюда http://code.autistici.org/svn/fim/trunk/src/FbiStuffDjvu.cpp удастся что-то взять?
die sheep! die to reverse the system
you accept (reject, respect);
next step,
kill next sacrifice, each sacrifice
Спасибо сказали: