91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5KB
    文件類型: .cs
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-06-05
  • 語言: C#
  • 標(biāo)簽: C#??tif轉(zhuǎn)jpg??

資源簡介

一般直接將tif轉(zhuǎn)成jpg會(huì)造成圖片變暗或者色彩差異較大,主要是因?yàn)橹苯泳€性拉伸導(dǎo)致了,這里我使用C#加gdal,將tif影像先進(jìn)行百分比截?cái)嗬欤俎D(zhuǎn)jpg,效果直接類似于在arcgis中截圖。另外,這個(gè)類中因?yàn)槭褂昧薵dal,所以如果直接用的話,還需要你的VS中引用gdal的類庫,但最主要的是,我想介紹這個(gè)C# 百分比截?cái)嗬斓乃惴?

資源截圖

代碼片段和文件信息

using?System;
using?System.Collections.Generic;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Drawing.Drawing2D;
using?System.IO;
using?System.Linq;
using?System.Text;
using?System.Threading.Tasks;
using?System.Windows.Forms;
using?OSGeo.GDAL;
using?OSGeo.OSR;

namespace?ImgProcess
{
????class?TifToJpg
????{
????????public?void?ConvertToJpg(string?tifPath?string?jpgPath)
????????{
????????????//gdal讀取影像
????????????Dataset?imgDatasat?=?Gdal.Open(tifPath?Access.GA_ReadOnly);
????????????int?bandCount?=?imgDatasat.RasterCount;
????????????int?XSize?=?imgDatasat.RasterXSize;
????????????int?YSize?=?imgDatasat.RasterYSize;
????????????Band[]?bandArray?=?new?Band[bandCount];???//用于存放三個(gè)波段
????????????List?bandData?=?new?List();???????//存放三個(gè)波段進(jìn)行百分比截?cái)嘀蟮慕Y(jié)果
????????????//對每個(gè)波段進(jìn)行處理
????????????for?(int?j?=?0;?j?????????????{
????????????????int?min?=?0?max?=?0;
????????????????Band?band?=?imgDatasat.GetRasterBand(j?+?1);
????????????????bandArray[j]?=?band;
????????????????int?pixelCount?=?XSize?*?YSize;
????????????????//讀取波段數(shù)據(jù)
????????????????int[]?dataBuffer?=?new?int[pixelCount];
????????????????band.ReadRaster(0?0?XSize?YSize?dataBuffer?XSize?YSize?0?0);
????????????????min?=?dataBuffer.Min();
????????????????max?=?dataBuffer.Max();
????????????????int[]?histImg?=?new?int[max?-?min];
????????????????band.GetHistogram(min?-?0.5?max?+?0.5?max?-?min?histImg?1?0?null?null);????//生成直方圖
????????????????int[]?data?=?PercentClipStretchImg(dataBuffer?pixelCount?histImg?0.005?0.995);????//百分比截?cái)?br/>????????????????bandData.Add(data);
????????????}
????????????//使用百分比截?cái)嗪蟮臄?shù)值依次對應(yīng)rgb,生成bitmap
????????????Bitmap?bm?=?new?Bitmap(XSize?YSize);
????????????for?(int?j?=?0;?j?????????????{
????????????????for?(int?i?=?0;?i?????????????????{
????????????????????int[]?rgb?=?new?int[3];
????????????????????for?(int?k?=?0;?k?????????????????????{
????????????????????????rgb[k]?=?bandData[k][j?*?XSize?+?i];
????????????????????}
????????????????????Color?color?=?Color.FromArgb(rgb[0]?rgb[1]?rgb[2]);
????????????????????bm.SetPixel(i?j?color);
????????????????}
????????????}
????????????Graphics?g?=?Graphics.FromImage(bm);
????????????bm.Save(jpgPath?System.Dr

評論

共有 條評論