我有大型500MB大小的图像我想在ASP.net中使用缩放和平移功能来显示此图像。我找到了OpenLayers,但任何人都可以使用任何框架/库共享任何工作示例,以实现ASP.net中的此功能。使用平移&缩放和注释流式传输大图像
1
A
回答
0
我建议制作一些较小的图像(Mipmapping http://en.wikipedia.org/wiki/Mipmap)或/并将它们剪切成较小的部分。 (Slice up an image into tiles)
想一想,你看不到500MB数据的所有像素。只传输你实际看到的内容。
0
我找到了一个我喜欢和你分享的答案。这里是代码
private static void Split(string fileName, int width, int height)
{
using (Bitmap source = new Bitmap(fileName))
{
bool perfectWidth = source.Width % width == 0;
bool perfectHeight = source.Height % height == 0;
int lastWidth = width;
if (!perfectWidth)
{
lastWidth = source.Width - ((source.Width/width) * width);
}
int lastHeight = height;
if (!perfectHeight)
{
lastHeight = source.Height - ((source.Height/height) * height);
}
int widthPartsCount = source.Width/width + (perfectWidth ? 0 : 1);
int heightPartsCount = source.Height/height + (perfectHeight ? 0 : 1);
for (int i = 0; i < widthPartsCount; i++)
for (int j = 0; j < heightPartsCount; j++)
{
int tileWidth = i == widthPartsCount - 1 ? lastWidth : width;
int tileHeight = j == heightPartsCount - 1 ? lastHeight : height;
using (Bitmap tile = new Bitmap(tileWidth, tileHeight))
{
using (Graphics g = Graphics.FromImage(tile))
{
g.DrawImage(source, new Rectangle(0, 0, tile.Width, tile.Height), new Rectangle(i * width, j * height, tile.Width, tile.Height), GraphicsUnit.Pixel);
}
tile.Save(string.Format("{0}-{1}.png", i + 1, j + 1), ImageFormat.Png);
}
}
}
}
相关问题
- 1. 图像缩放和平移
- 2. 图像平移和缩放
- 3. 使用d3.js缩放平移图像
- 4. 使用SDL平滑缩放大图像
- 5. 在Silverlight中放大平移和缩放图像
- 6. 缩放和平移QScrollArea中的图像
- 7. 缩放和平移图像画布
- 8. 平移和缩放图像的jQuery Mobile
- 9. Direct3D是否适用于缩放和平移大图像?
- 10. 如何使用缩放缩放封面流图像放大android
- 11. 图像放大镜 - 放大图像悬停和平移图像鼠标移动
- 12. 用画布缩放大图像。平滑
- 13. 图像缩放和平滑
- 14. 使用ffmpeg平移和缩放多个图像
- 15. 移动和缩放图像
- 16. 图像缩放,平移和切片图像
- 17. 就像在Bing地图控件中平移和缩放大图像
- 18. 缩放/平移framelayout有图像浏览
- 19. Android - WebView缩放/平移图像
- 20. 缩放和平移的平移和缩放顺序
- 21. 2D缩放,缩放和平移
- 22. 如何放大和缩小图像并移动所有图像
- 23. 捏放大图像和缩小图像
- 24. 使用ASP.Net Webapi流式传输大图像
- 25. 使用CSS缩放图像中的缩放图像和/或缩小图像以适合图像的最大面
- 26. AChartEngine Android - 重置缩放和平移图?
- 27. 在Bing地图上平移和缩放
- 28. 试图获得显示图像缩放和平移的句柄
- 29. 实现平移和缩放
- 30. 单张缩放和平移
如果我们去切片然后放大和缩小什么如果用户想看到完整的图像 –
结合的方法。做一个piramid。 1图像缩小为1024x768(顶级),然后将其切片为1024x768(第二级)的4幅图像等。缩放级别决定了您的开启级别。 (这是谷歌地图的工作原理)你只需要考虑你应该发送给gui /客户端的图像。下面是一些示例:graphics.cs.cmu.edu/courses/15-463/2005_fall/www/Lectures/...请参阅图像金字塔。 –
正如@JeroenvanLangen所说,你需要某种“地图平铺系统”。要获得一个好的概述,请查看[Bing Maps Tile System](https://msdn.microsoft.com/en-us/library/bb259689.aspx) – SSchuette