c# Thumbnail 生成缩略图,生成压缩图,最大宽高比例缩放,最大边按比例缩放

原代码来自共享,这里谢一下原作者,再增加点扩展,分享一下

,扩展:ThumbMode.MaxHW 模式

,说明:最大宽高比例缩放,最大边按比例缩放

,例1:原图 100*50 生成 50*30,则结果为 50*25

,例2:原图 100*50 生成 50*10,则结果为 20*10

,例3:原图 100*50 生成 200*300,则结果不视为原图。即生成的宽,大于或等于原图宽,或生成的高,大于或等于原图高时,使用原图比例

,使用代码:Thumbnail.MakeThumbnailImage(@"d:\存在的图片.jpg", @"d:\生成的图片文件名.jpg", 50, 30, ThumbMode.MaxHW);

 

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Net;

namespace Common {
    public enum ThumbMode {
        Default,
        HW,
        W,
        H,
        Cut,
        MaxHW
    }
    /// <summary>
    /// Thumbnail 生成缩略图,生成压缩图,
    /// </summary>
    public class Thumbnail {
        private Image srcImage;
        private string srcFileName;

        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="FileName">原始图片路径</param>
        public bool SetImage(string FileName) {
            srcFileName = JnUtils.GetMapPath(FileName);
            try {
                srcImage = Image.FromFile(srcFileName);
            }
            catch {
                return false;
            }
            return true;
        }

        /// <summary>
        /// 回调
        /// </summary>
        /// <returns></returns>
        public bool ThumbnailCallback() => false;

        /// <summary>
        /// 生成缩略图,返回缩略图的Image对象
        /// </summary>
        /// <param name="Width">缩略图宽度</param>
        /// <param name="Height">缩略图高度</param>
        /// <returns>缩略图的Image对象</returns>
        public Image GetImage(int Width, int Height) {
            Image img;
            Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
            img = srcImage.GetThumbnailImage(Width, Height, callb, IntPtr.Zero);
            return img;
        }

        /// <summary>
        /// 保存缩略图
        /// </summary>
        /// <param name="Width"></param>
        /// <param name="Height"></param>
        public void SaveThumbnailImage(int Width, int Height) {
            switch (Path.GetExtension(srcFileName).ToLower()) {
                case ".png":
                    SaveImage(Width, Height, ImageFormat.Png);
                    break;
                case ".gif":
                    SaveImage(Width, Height, ImageFormat.Gif);
                    break;
                default:
                    SaveImage(Width, Height, ImageFormat.Jpeg);
                    break;
            }
        }

        /// <summary>
        /// 生成缩略图并保存
        /// </summary>
        /// <param name="Width">缩略图的宽度</param>
        /// <param name="Height">缩略图的高度</param>
        /// <param name="imgformat">保存的图像格式</param>
        /// <returns>缩略图的Image对象</returns>
        public void SaveImage(int Width, int Height, ImageFormat imgformat) {
            if (imgformat != ImageFormat.Gif && (srcImage.Width > Width) || (srcImage.Height > Height)) {
                Image img;
                Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
                img =
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来回答你的问题。首先,你可以使用 HTML 表单和 PHP 来上传图片。以下是实现上传图片的 PHP 代码: ```php <?php if(isset($_POST['submit'])){ $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); $max_width = $_POST['max_width']; $max_height = $_POST['max_height']; $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); if($check !== false){ if($imageFileType == "jpg" || $imageFileType == "png" || $imageFileType == "jpeg" || $imageFileType == "gif" ){ if(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)){ $image = $target_dir . basename($_FILES["fileToUpload"]["name"]); $thumbnail = $target_dir . 'thumbnail_' . basename($_FILES["fileToUpload"]["name"]); list($width, $height) = getimagesize($image); $ratio = min($max_width/$width, $max_height/$height); $new_width = $width * $ratio; $new_height = $height * $ratio; $thumb = imagecreatetruecolor($new_width, $new_height); if($imageFileType == "jpg" || $imageFileType == "jpeg"){ $source = imagecreatefromjpeg($image); }else if($imageFileType == "png"){ $source = imagecreatefrompng($image); }else if($imageFileType == "gif"){ $source = imagecreatefromgif($image); } imagecopyresampled($thumb, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height); if($imageFileType == "jpg" || $imageFileType == "jpeg"){ imagejpeg($thumb, $thumbnail); }else if($imageFileType == "png"){ imagepng($thumb, $thumbnail); }else if($imageFileType == "gif"){ imagegif($thumb, $thumbnail); } echo "The original image is <img src='$image'/><br>"; echo "The thumbnail image is <img src='$thumbnail'/>"; }else{ echo "Sorry, there was an error uploading your file."; } }else{ echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; } }else{ echo "File is not an image."; } } ?> ``` 这个 PHP 代码实现了上传图片生成缩略图的功能,其中包括: - 检查上传的文件是否是一个像文件 - 检查上传的文件是否已经存在 - 检查上传的文件类型是否是允许的类型 - 移动上传的文件到指定文件夹 - 计算缩略图的大小 - 创建缩略图 - 输出原缩略图 你可以把上面的 PHP 代码放在一个 HTML 表单页面中,这样就可以通过浏览器上传图片生成缩略图了。以下是一个简单的 HTML 表单页面: ```html <!DOCTYPE html> <html> <head> <title>Upload Image and Generate Thumbnail</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> Select image to upload: <input type="file" name="fileToUpload" id="fileToUpload"><br><br> Max Width of Thumbnail: <input type="number" name="max_width" value="200"><br><br> Max Height of Thumbnail: <input type="number" name="max_height" value="200"><br><br> <input type="submit" value="Upload Image and Generate Thumbnail" name="submit"> </form> </body> </html> ``` 在这个 HTML 表单页面中,你可以选择一个图片文件,设置缩略图最大宽度和最大高度,然后点击提交按钮来上传图片生成缩略图。 我希望这个代码对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值