ngx_int_t ngx_http_small_light_imlib2_init(ngx_http_request_t *r, ngx_http_small_light_ctx_t *ctx) { ngx_http_small_light_imlib2_ctx_t *ictx; ictx = (ngx_http_small_light_imlib2_ctx_t *)ctx->ictx; ictx->image = ctx->content; ictx->image_len = ctx->content_length; ictx->type = ngx_http_small_light_type_detect(ictx->image, ictx->image_len); ictx->r = r; if (ictx->type == NGX_HTTP_SMALL_LIGHT_IMAGE_NONE) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "failed to get image type %s:%d", __FUNCTION__, __LINE__); return NGX_ERROR; } ictx->tf = ngx_pcalloc(r->pool, sizeof(ngx_temp_file_t)); if (ictx->tf == NULL) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "failed to allocate memory from r->pool %s:%d", __FUNCTION__, __LINE__); return NGX_ERROR; } ictx->tf->file.fd = NGX_INVALID_FILE; ictx->tf->file.log = r->connection->log; ictx->tf->path = ctx->imlib2_temp_dir; ictx->tf->pool = r->pool; if (ngx_create_temp_file(&ictx->tf->file, ictx->tf->path, ictx->tf->pool, 1, 0, 0600) != NGX_OK) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "failed to create temporary file %s:%d", __FUNCTION__, __LINE__); return NGX_ERROR; } if (ngx_write_file(&ictx->tf->file, ictx->image, ictx->image_len, 0) == NGX_ERROR) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "failed to save temporary file %s:%d", __FUNCTION__, __LINE__); ngx_http_small_light_imlib2_term(ctx); return NGX_ERROR; } return NGX_OK; }
ngx_int_t ngx_http_small_light_imagemagick_init(ngx_http_request_t *r, ngx_http_small_light_ctx_t *ctx) { ngx_http_small_light_imagemagick_ctx_t *ictx; ictx = (ngx_http_small_light_imagemagick_ctx_t *)ctx->ictx; ictx->wand = NewMagickWand(); ictx->image = ctx->content; ictx->image_len = ctx->content_length; ictx->type = ngx_http_small_light_type_detect(ictx->image, ictx->image_len); ictx->complete = 0; if (ictx->type == NGX_HTTP_SMALL_LIGHT_IMAGE_NONE) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "failed to get image type %s:%d", __FUNCTION__, __LINE__); return NGX_ERROR; } return NGX_OK; }