我正在使用
前任开发者创建了静态方法,接收位图作为参数并返回一张位图,内部分配和处理了
当前的过程如下:
有什么想法或建议吗?
噢,我应该提到,这是我第一次真正使用.NET,因此如果我说的话听起来困惑,请耐心等待并给我一些提示。
System.Drawing
类从用户上传的照片生成缩略图和水印图片。用户还可以在上传原始图像后使用jCrop裁剪图像。我接手了这段代码,希望简化并优化它(它正在被一个高流量网站使用)。前任开发者创建了静态方法,接收位图作为参数并返回一张位图,内部分配和处理了
Graphics
对象。我的理解是,Bitmap
实例在内存中包含整个图像,而Graphics
是绘制操作的队列,并且是幂等的。当前的过程如下:
- 接收图像并将其存储在临时文件中。
- 接收裁剪坐标。
- 将原始位图加载到内存中。
- 从原始位图创建一个新位图,应用裁剪。
- 对新位图进行一些疯狂的亮度调整,可能 (?) 返回一个新的位图(我不想触碰这个部分;指针运算很多!),我们称之为 A。
- 从结果位图创建另一个位图,应用水印 (我们称之为 B1)。
- 从 A 创建一个 175x175 的缩略图位图。
- 从 A 创建一个 45x45 的缩略图位图。
Graphics
实例,从而创建一个流水线?实际上,我只需要在内存中保存 1 个图像(原始上传),而其余的可以直接写入磁盘。所有生成的图像都需要进行裁剪和亮度转换,并且需要进行一个唯一于该版本的单个转换,从而有效地创建操作树。有什么想法或建议吗?
噢,我应该提到,这是我第一次真正使用.NET,因此如果我说的话听起来困惑,请耐心等待并给我一些提示。