void send_jpeg_data(rgb_ptr image_buffer, int quality) { struct jpeg_compress_struct cinfo; struct jpeg_error_mgr jerr; FILE * outfile; JSAMPROW row_pointer[1]; int row_stride; char filename[256]; get_tmp_file_name(filename, get_io_cfg()->tmp_path); cinfo.err = jpeg_std_error(&jerr); jpeg_create_compress(&cinfo); if ((outfile = fopen(filename, "wb")) == NULL ) { fprintf(stderr, "can't open %s\n", filename); return; } jpeg_stdio_dest(&cinfo, outfile); cinfo.image_width = get_cap()-> weigth; cinfo.image_height = get_cap()-> height; cinfo.input_components = 3; cinfo.in_color_space = JCS_RGB; jpeg_set_defaults(&cinfo); jpeg_set_quality(&cinfo, quality, true); jpeg_start_compress(&cinfo, true); row_stride = get_cap()-> weigth * 3; while (cinfo.next_scanline < cinfo.image_height) { row_pointer[0] = &image_buffer[cinfo.next_scanline * row_stride]; (void) jpeg_write_scanlines(&cinfo, row_pointer, 1); } jpeg_finish_compress(&cinfo); fclose(outfile); jpeg_destroy_compress(&cinfo); FILE* f; f = fopen(filename, "r"); int c; size_t s = 0; char* buff = malloc(1024 * 30); while((c = getc(f))!=EOF){ buff[s++]=c; } fclose(f); send_data((rgb_ptr)buff, s); free(buff); }
int wcplg_do_sftp(char *_cmd, char *_server_output) { FILE *fp; int ret = 0, i2 = 0, i3 = 0; char batchfile[MAX_PATH]; char *_cmd_ln = NULL; struct sftp_command *cmd; server_output = _server_output; _cmd_ln = (char *) malloc(strlen(_cmd) + 2); wcplg_set_last_error_msg(""); strcpy(_cmd_ln, _cmd); strcat(_cmd_ln, "\n"); get_tmp_file_name(batchfile); fp = fopen(batchfile, "w"); if (!fp) { printf("Fatal: unable to open %s\n", batchfile); return 2; } fwrite(_cmd_ln, sizeof(char), strlen(_cmd_ln), fp); fclose(fp); free(_cmd_ln); fp = fopen(batchfile, "r"); if (!fp) { printf("Fatal: unable to open %s\n", batchfile); return 2; } //sftp_getcmd() Speicherloch!!! FIXME cmd = sftp_getcmd(fp, 1, 1); // löschen fclose(fp); remove(batchfile); //cmd->words= eventl. noch zusammenbasteln if (cmd) { ret = cmd->obey(cmd); } return ret; }