String 占多少象素

J2ME开发:要在屏幕上显示一个字符串后,再接着显示另一个,怎么知道前面的字符串显示的宽度?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是用 C 代码实现输入图片并在图片外围补上一圈黑色像素点的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define BORDER_SIZE 1 // 外围黑色像素点的大小 int main() { char filename[256]; printf("请输入图片文件名:"); scanf("%s", filename); FILE *fp = fopen(filename, "rb"); if (fp == NULL) { printf("无法打开文件 %s\n", filename); return 1; } // 读取图片头信息 unsigned char header[54]; fread(header, sizeof(unsigned char), 54, fp); // 获取图片宽度和高度 int width = *(int*)&header[18]; int height = *(int*)&header[22]; // 计算每行像素的字节数 int row_size = width * 3; if (row_size % 4 != 0) { row_size += 4 - (row_size % 4); } // 计算新的宽度和高度 int new_width = width + BORDER_SIZE * 2; int new_height = height + BORDER_SIZE * 2; // 计算新的每行像素的字节数 int new_row_size = new_width * 3; if (new_row_size % 4 != 0) { new_row_size += 4 - (new_row_size % 4); } // 分配内存存储原始图片数据和新图片数据 unsigned char *data = (unsigned char*)malloc(row_size * height); unsigned char *new_data = (unsigned char*)calloc(new_row_size * new_height, sizeof(unsigned char)); // 读取原始图片数据 fread(data, sizeof(unsigned char), row_size * height, fp); // 关闭文件 fclose(fp); // 复制原始图片数据到新图片数据中心区域 for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { int src_index = y * row_size + x * 3; int dst_index = (y + BORDER_SIZE) * new_row_size + (x + BORDER_SIZE) * 3; new_data[dst_index] = data[src_index]; new_data[dst_index + 1] = data[src_index + 1]; new_data[dst_index + 2] = data[src_index + 2]; } } // 在新图片数据中外围补上黑色像素点 for (int y = 0; y < new_height; y++) { for (int x = 0; x < new_width; x++) { if (x < BORDER_SIZE || x >= new_width - BORDER_SIZE || y < BORDER_SIZE || y >= new_height - BORDER_SIZE) { int dst_index = y * new_row_size + x * 3; new_data[dst_index] = 0; new_data[dst_index + 1] = 0; new_data[dst_index + 2] = 0; } } } // 写入新图片文件 char new_filename[256]; sprintf(new_filename, "border_%s", filename); fp = fopen(new_filename, "wb"); if (fp == NULL) { printf("无法创建文件 %s\n", new_filename); return 1; } fwrite(header, sizeof(unsigned char), 54, fp); fwrite(new_data, sizeof(unsigned char), new_row_size * new_height, fp); // 关闭文件 fclose(fp); // 释放内存 free(data); free(new_data); printf("已生成新图片文件 %s\n", new_filename); return 0; } ``` 注意:以上代码仅供参考,实际使用时需要根据具体情况进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值